Bug 103843

Summary: Coordinated Graphics: Reorder messages to CoordinatedLayerTreeHostProxy
Product: WebKit Reporter: Dongseong Hwang <dongseong.hwang>
Component: Layout and RenderingAssignee: Dongseong Hwang <dongseong.hwang>
Status: RESOLVED FIXED    
Severity: Normal CC: noam, tmpsantos, webkit.review.bot, zeno
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on: 104257, 104260, 104518    
Bug Blocks: 103854, 104990    
Attachments:
Description Flags
Patch
none
Patch
none
Patch: flush compositing states of layers by the tree order
none
Patch: Remove updateViewport() in LayerTreeCoordinatorProxy::setRootCompositingLayer()
none
Patch: Send messages to the UI process by the tree order.
none
Patch: Remove updateViewport() in LayerTreeCoordinatorProxy::setRootCompositingLayer()
none
Patch: Send SetRootCompositingLayer message to the UI process before SetLayerState message.
none
Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once
dongseong.hwang: review+, dongseong.hwang: commit-queue-
Patch: Send SetRootCompositingLayer message to the UI process before SetLayerState message.
noam: review+, noam: commit-queue-
Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once
webkit.review.bot: commit-queue-
Patch: Send SetRootCompositingLayer message to the UI process before SetLayerState message.
webkit.review.bot: commit-queue-
Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once
webkit.review.bot: commit-queue-
Patch: Send SetRootCompositingLayer message to the UI process before SetLayerState message.
none
Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once
none
Patch: Send SetRootCompositingLayer message to the UI process before SetLayerState message.
none
Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once
noam: review+, noam: commit-queue-
Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once none

Dongseong Hwang
Reported 2012-12-02 14:53:15 PST
We must flush compositing states of layers by the tree order: root layer, non-composited layer, page-overlay layer and WebCore's root layer. If flushing by wrong order, child layer cannot know which layer is its parent. This patch flushes layer states by the tree order. In addiation, this patch removes updateViewport() in LayerTreeCoordinatorProxy::setRootCompositingLayer() because LayerTreeCoordinatorProxy::didRenderFrame() is always called after setting the root layer.
Attachments
Patch (6.21 KB, patch)
2012-12-02 15:36 PST, Dongseong Hwang
no flags
Patch (2.19 KB, patch)
2012-12-02 17:19 PST, Dongseong Hwang
no flags
Patch: flush compositing states of layers by the tree order (2.40 KB, patch)
2012-12-02 21:29 PST, Dongseong Hwang
no flags
Patch: Remove updateViewport() in LayerTreeCoordinatorProxy::setRootCompositingLayer() (3.17 KB, patch)
2012-12-02 21:37 PST, Dongseong Hwang
no flags
Patch: Send messages to the UI process by the tree order. (2.13 KB, patch)
2012-12-02 22:40 PST, Dongseong Hwang
no flags
Patch: Remove updateViewport() in LayerTreeCoordinatorProxy::setRootCompositingLayer() (3.08 KB, patch)
2012-12-02 22:44 PST, Dongseong Hwang
no flags
Patch: Send SetRootCompositingLayer message to the UI process before SetLayerState message. (7.75 KB, patch)
2012-12-02 23:07 PST, Dongseong Hwang
no flags
Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once (1.98 KB, patch)
2012-12-02 23:14 PST, Dongseong Hwang
dongseong.hwang: review+
dongseong.hwang: commit-queue-
Patch: Send SetRootCompositingLayer message to the UI process before SetLayerState message. (5.82 KB, patch)
2012-12-04 00:08 PST, Dongseong Hwang
noam: review+
noam: commit-queue-
Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once (2.08 KB, patch)
2012-12-04 00:11 PST, Dongseong Hwang
webkit.review.bot: commit-queue-
Patch: Send SetRootCompositingLayer message to the UI process before SetLayerState message. (5.91 KB, patch)
2012-12-04 01:07 PST, Dongseong Hwang
webkit.review.bot: commit-queue-
Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once (2.01 KB, patch)
2012-12-04 01:10 PST, Dongseong Hwang
webkit.review.bot: commit-queue-
Patch: Send SetRootCompositingLayer message to the UI process before SetLayerState message. (5.89 KB, patch)
2012-12-04 02:12 PST, Dongseong Hwang
no flags
Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once (1.95 KB, patch)
2012-12-05 20:26 PST, Dongseong Hwang
no flags
Patch: Send SetRootCompositingLayer message to the UI process before SetLayerState message. (6.33 KB, patch)
2012-12-09 20:50 PST, Dongseong Hwang
no flags
Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once (2.08 KB, patch)
2012-12-12 22:37 PST, Dongseong Hwang
noam: review+
noam: commit-queue-
Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once (2.03 KB, patch)
2012-12-13 16:22 PST, Dongseong Hwang
no flags
Dongseong Hwang
Comment 1 2012-12-02 15:36:17 PST
Noam Rosenthal
Comment 2 2012-12-02 16:56:19 PST
Comment on attachment 177156 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=177156&action=review > Source/WebKit2/ChangeLog:16 > + In addition, this patch removes updateViewport() in > + LayerTreeCoordinatorProxy::setRootCompositingLayer() because > + LayerTreeCoordinatorProxy::didRenderFrame() is always called after > + setting the root layer. Different patch. > Source/WebKit2/ChangeLog:20 > + In addition, this patch clarifies LayerTreeRenderer::setRootLayerID() can be > + called only once in its lifecycle. LayerTreeRenderer, LayerTreeCoordinator and > + LayerTreeCoordinatorProxy belong to WebPage, so those have the same lifecycle Different patch.
Dongseong Hwang
Comment 3 2012-12-02 16:58:57 PST
(In reply to comment #2) > (From update of attachment 177156 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=177156&action=review > > > Source/WebKit2/ChangeLog:16 > > + In addition, this patch removes updateViewport() in > > + LayerTreeCoordinatorProxy::setRootCompositingLayer() because > > + LayerTreeCoordinatorProxy::didRenderFrame() is always called after > > + setting the root layer. > > Different patch. > > > Source/WebKit2/ChangeLog:20 > > + In addition, this patch clarifies LayerTreeRenderer::setRootLayerID() can be > > + called only once in its lifecycle. LayerTreeRenderer, LayerTreeCoordinator and > > + LayerTreeCoordinatorProxy belong to WebPage, so those have the same lifecycle > > Different patch. Thanks for review! I'll separate!
Dongseong Hwang
Comment 4 2012-12-02 17:19:01 PST
Noam Rosenthal
Comment 5 2012-12-02 17:20:10 PST
Comment on attachment 177164 [details] Patch Is there any way to test this?
Dongseong Hwang
Comment 6 2012-12-02 17:38:38 PST
(In reply to comment #5) > (From update of attachment 177164 [details]) > Is there any way to test this? I made this patch not due to bug. I made this patch because I just found this weird seq. Moreover, LayerTreeRenderer::flushLayerChanges() calls m_rootLayer->flushCompositingState(FloatRect()). If a bug exists, it must be a timing bug. Unfortunately, I don't have a good idea.
Noam Rosenthal
Comment 7 2012-12-02 17:40:53 PST
Comment on attachment 177164 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=177164&action=review > Source/WebKit2/ChangeLog:11 > + We must flush compositing states of layers by the tree order: root layer, > + non-composited layer, page-overlay layer and WebCore's root layer. If flushing > + by wrong order, child layer cannot know which layer is its parent. This patch > + flushes layer states by the tree order. But setting the parent/children has nothing to do with flushing... I still don't think there's a bug here.
Dongseong Hwang
Comment 8 2012-12-02 17:52:29 PST
(In reply to comment #7) > (From update of attachment 177164 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=177164&action=review > > > Source/WebKit2/ChangeLog:11 > > + We must flush compositing states of layers by the tree order: root layer, > > + non-composited layer, page-overlay layer and WebCore's root layer. If flushing > > + by wrong order, child layer cannot know which layer is its parent. This patch > > + flushes layer states by the tree order. > > But setting the parent/children has nothing to do with flushing... I still don't think there's a bug here. In my understanding, setting children causes flushing. During flushing, we set children to each TextureMapperLayer. So, if animation calls updateViewport() between flushing root layer and DidRenderFrame, flash can occur. void LayerTreeCoordinator::syncLayerChildren(WebLayerID id, const Vector<WebLayerID>& children) { m_shouldSyncFrame = true; m_webPage->send(Messages::LayerTreeCoordinatorProxy::SetCompositingLayerChildren(id, children)); } void TextureMapperLayer::flushCompositingStateSelf(GraphicsLayerTextureMapper* graphicsLayer, TextureMapper*) { ... if (changeMask & ParentChange) { TextureMapperLayer* newParent = toTextureMapperLayer(graphicsLayer->parent()); if (newParent != m_parent) { // Remove layer from current from child list first. if (m_parent) { size_t index = m_parent->m_children.find(this); m_parent->m_children.remove(index); m_parent = 0; } // Set new layer parent and add layer to the parents child list. if (newParent) { m_parent = newParent; m_parent->m_children.append(this); } } } if (changeMask & ChildrenChange) { // Clear children parent pointer to avoid unsync and crash on layer delete. for (size_t i = 0; i < m_children.size(); i++) m_children[i]->m_parent = 0; m_children.clear(); for (size_t i = 0; i < graphicsLayer->children().size(); ++i) { TextureMapperLayer* child = toTextureMapperLayer(graphicsLayer->children()[i]); if (!child) continue; m_children.append(child); child->m_parent = this; } } ... }
Noam Rosenthal
Comment 9 2012-12-02 18:25:07 PST
Comment on attachment 177164 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=177164&action=review >>> Source/WebKit2/ChangeLog:11 >>> + flushes layer states by the tree order. >> >> But setting the parent/children has nothing to do with flushing... I still don't think there's a bug here. > > In my understanding, setting children causes flushing. During flushing, we set children to each TextureMapperLayer. > > So, if animation calls updateViewport() between flushing root layer and DidRenderFrame, flash can occur. > > void LayerTreeCoordinator::syncLayerChildren(WebLayerID id, const Vector<WebLayerID>& children) > { > m_shouldSyncFrame = true; > m_webPage->send(Messages::LayerTreeCoordinatorProxy::SetCompositingLayerChildren(id, children)); > } > > void TextureMapperLayer::flushCompositingStateSelf(GraphicsLayerTextureMapper* graphicsLayer, TextureMapper*) > { > ... > if (changeMask & ParentChange) { > TextureMapperLayer* newParent = toTextureMapperLayer(graphicsLayer->parent()); > if (newParent != m_parent) { > // Remove layer from current from child list first. > if (m_parent) { > size_t index = m_parent->m_children.find(this); > m_parent->m_children.remove(index); > m_parent = 0; > } > // Set new layer parent and add layer to the parents child list. > if (newParent) { > m_parent = newParent; > m_parent->m_children.append(this); > } > } > } > > if (changeMask & ChildrenChange) { > // Clear children parent pointer to avoid unsync and crash on layer delete. > for (size_t i = 0; i < m_children.size(); i++) > m_children[i]->m_parent = 0; > > m_children.clear(); > for (size_t i = 0; i < graphicsLayer->children().size(); ++i) { > TextureMapperLayer* child = toTextureMapperLayer(graphicsLayer->children()[i]); > if (!child) > continue; > m_children.append(child); > child->m_parent = this; > } > } > ... > } Right, but in this case you're not flushing to TextureMapperLayer, you're flushing CoordinatedGraphicsLayer... Since we only call DidRenderFrame at the end anyway, I still fail to see your point :)
Dongseong Hwang
Comment 10 2012-12-02 19:20:59 PST
(In reply to comment #9) > (From update of attachment 177164 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=177164&action=review > Right, but in this case you're not flushing to TextureMapperLayer, you're flushing CoordinatedGraphicsLayer... Since we only call DidRenderFrame at the end anyway, I still fail to see your point :) OMG, I understand what you mean. Only DidRenderFrame can start to sync TextureMapperLayer tree, so this patch can not change any behavior. This patch only improves readability slightly. Could you think this patch needed? If so, I'll change changelog and repost.
Noam Rosenthal
Comment 11 2012-12-02 19:29:10 PST
> This patch only improves readability slightly. Could you think this patch needed? If so, I'll change changelog and repost. I think it's questionable whether this improves readability or not... I would propose to give it up :)
Dongseong Hwang
Comment 12 2012-12-02 20:23:10 PST
(In reply to comment #11) > > This patch only improves readability slightly. Could you think this patch needed? If so, I'll change changelog and repost. > I think it's questionable whether this improves readability or not... I would propose to give it up :) Your concern is very reasonable. However, I can not give it up because of actor model. After implementing actor model TextureMapperLayer, LayerTreeRenderer must manage tree traversing while GraphicsLayerTextureMapper manages tree traversing too. (like Bug 103366). I have the plan that TextureMapperLayer has a queue like render queue of LayerTreeRenderer. and then LayerTreeRenderer dispatches a task like SetLayerState to TextureMapperLayer when receiving the given task. and then when LayerTreeRenderer calls TextureMapperLayer::flushCompositingState(), TextureMapperLayer will flush all tasks in the queue. Before implementing above actor model, we need to refactor the communication between LayerTreeCoordinator and LayerTreeRenderer. Currently, LayerTreeCoordinator sends messages by convenient order for implementation, but in WK1 the order is impossible. For example, 1. this bug. It is possible to sync WebCore root layer before synchronizing AC root layer. 2. synchronizing layer states can be called before calling SetRootLayerID. 3. LayerTreeRenderer::setChildrend() can create children layers. I want to create children layers as soon as Web Process children layers are created. 4. etc.. If we make the communication order consistent with WK1, I think we can get two benefits. 1. Easy to understand call flow. 2. Avoid potential bugs like Bug 103522. Most of all, LayerTreeRenderer can just dispatch tasks to TextureMapperLayer in that LayerTreeRenderer can believe LayerTreeCoordinator sends messages by right order!
Dongseong Hwang
Comment 13 2012-12-02 21:18:56 PST
I'll post several small patches to correct the communication order. I want to listen your opinion. :)
Dongseong Hwang
Comment 14 2012-12-02 21:29:27 PST
Created attachment 177173 [details] Patch: flush compositing states of layers by the tree order
Dongseong Hwang
Comment 15 2012-12-02 21:37:28 PST
Created attachment 177176 [details] Patch: Remove updateViewport() in LayerTreeCoordinatorProxy::setRootCompositingLayer()
Noam Rosenthal
Comment 16 2012-12-02 21:58:44 PST
Comment on attachment 177176 [details] Patch: Remove updateViewport() in LayerTreeCoordinatorProxy::setRootCompositingLayer() Reapply changelog with new bug title.
Noam Rosenthal
Comment 17 2012-12-02 22:00:30 PST
Comment on attachment 177173 [details] Patch: flush compositing states of layers by the tree order View in context: https://bugs.webkit.org/attachment.cgi?id=177173&action=review > Source/WebKit2/ChangeLog:14 > + It is a preparation patch to change TextureMapperLayer to actor model. > + > + We should flush compositing states of layers by the tree order: root layer, > + non-composited layer, page-overlay layer and WebCore's root layer. Currently, it > + is not a problem, but when implementing actor model, it can causes bugs, because > + LayerTreeRenderer expects to receive the SetLayerState message by the tree > + order. This patch flushes layer states by the tree order. Reword: Send messages to the UI process by the tree order. This is in preparation for refactoring TextureMapper to work in an actor model ([put link to meta-bug for that refactor here]).
Dongseong Hwang
Comment 18 2012-12-02 22:08:58 PST
(In reply to comment #17) > (From update of attachment 177173 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=177173&action=review > > > Source/WebKit2/ChangeLog:14 > > + It is a preparation patch to change TextureMapperLayer to actor model. > > + > > + We should flush compositing states of layers by the tree order: root layer, > > + non-composited layer, page-overlay layer and WebCore's root layer. Currently, it > > + is not a problem, but when implementing actor model, it can causes bugs, because > > + LayerTreeRenderer expects to receive the SetLayerState message by the tree > > + order. This patch flushes layer states by the tree order. > > Reword: > Send messages to the UI process by the tree order. > This is in preparation for refactoring TextureMapper to work in an actor model ([put link to meta-bug for that refactor here]). Thx for rephrasing!!
Dongseong Hwang
Comment 19 2012-12-02 22:40:27 PST
Created attachment 177181 [details] Patch: Send messages to the UI process by the tree order.
Dongseong Hwang
Comment 20 2012-12-02 22:44:39 PST
Created attachment 177182 [details] Patch: Remove updateViewport() in LayerTreeCoordinatorProxy::setRootCompositingLayer()
Dongseong Hwang
Comment 21 2012-12-02 23:07:35 PST
Created attachment 177189 [details] Patch: Send SetRootCompositingLayer message to the UI process before SetLayerState message.
Dongseong Hwang
Comment 22 2012-12-02 23:14:08 PST
Created attachment 177190 [details] Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once
Dongseong Hwang
Comment 23 2012-12-02 23:16:14 PST
Comment on attachment 177190 [details] Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once I have run layout test(compositing) and load various tests(e.g. snowstack) with Qt WK2 debug build.
WebKit Review Bot
Comment 24 2012-12-02 23:28:16 PST
Comment on attachment 177181 [details] Patch: Send messages to the UI process by the tree order. Clearing flags on attachment: 177181 Committed r136367: <http://trac.webkit.org/changeset/136367>
Dongseong Hwang
Comment 25 2012-12-03 18:36:11 PST
I have problem about TiledBackingStore. When I clear the life cycle of CoordinatedGraphicsLayer, I find CreateTile and RemoveTile messages can be sent to UI Process regardless of CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly(). It means UI Process can receive CreateTile message before LayerTreeRenderer creates the given layer. I need to refactor CoordinatedGraphicsLayer with TiledBackingStore before progressing about the life cycle of CoordinatedGraphicsLayer. I'll refactor in Bug 103959
Dongseong Hwang
Comment 26 2012-12-03 23:33:36 PST
noam comes back! I wait you :) how about 3rd and 4rd patches? I can repost.
Noam Rosenthal
Comment 27 2012-12-03 23:36:51 PST
Comment on attachment 177189 [details] Patch: Send SetRootCompositingLayer message to the UI process before SetLayerState message. This feels a bit awkward. I think LayerTreeCoordinator should deal with this internally, e.g. by sending the rootLayer message once right before the first coordinating message, rather than have CoordinatedGraphicsLayer know about this.
WebKit Review Bot
Comment 28 2012-12-03 23:37:25 PST
Comment on attachment 177182 [details] Patch: Remove updateViewport() in LayerTreeCoordinatorProxy::setRootCompositingLayer() Clearing flags on attachment: 177182 Committed r136477: <http://trac.webkit.org/changeset/136477>
Noam Rosenthal
Comment 29 2012-12-03 23:37:30 PST
Comment on attachment 177190 [details] Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once LGTM, not committing in case this depends on something else...
Dongseong Hwang
Comment 30 2012-12-03 23:43:18 PST
(In reply to comment #27) > (From update of attachment 177189 [details]) > This feels a bit awkward. > I think LayerTreeCoordinator should deal with this internally, e.g. by sending the rootLayer message once right before the first coordinating message, rather than have CoordinatedGraphicsLayer know about this. I agree on you. My first trial was similar to your comments, but I failed, because of two reasons. 1. RenderLayerBacking calls CoordinatedGraphicsLayer::flushCompositingState. I cannot handle it. 2. We can communicate only if LayerTreeCoordinator::m_layerFlushSchedulingEnabled is true, but the constructor of LayerTreeCoordinator set m_layerFlushSchedulingEnabled to false, so I can not send the SetRootLayer message in constructor. Can I send the SetRootLayer message in constructor. If so, everything will be fine. If not, I'll investigate what can I do, and I need advice too. :-)
Dongseong Hwang
Comment 31 2012-12-03 23:54:42 PST
(In reply to comment #30) > (In reply to comment #27) > > (From update of attachment 177189 [details] [details]) > > This feels a bit awkward. > > I think LayerTreeCoordinator should deal with this internally, e.g. by sending the rootLayer message once right before the first coordinating message, rather than have CoordinatedGraphicsLayer know about this. > > I agree on you. My first trial was similar to your comments, but I failed, because of two reasons. > 1. RenderLayerBacking calls CoordinatedGraphicsLayer::flushCompositingState. I cannot handle it. > 2. We can communicate only if LayerTreeCoordinator::m_layerFlushSchedulingEnabled is true, but the constructor of LayerTreeCoordinator set m_layerFlushSchedulingEnabled to false, so I can not send the SetRootLayer message in constructor. > > Can I send the SetRootLayer message in constructor. If so, everything will be fine. If not, I'll investigate what can I do, and I need advice too. :-) Oops, I found the constructor of LayerTreeCoordinator set m_layerFlushSchedulingEnabled to true. I think we can send SetRootLayer message in the constructor as you suggest. I'll post.
Dongseong Hwang
Comment 32 2012-12-04 00:08:35 PST
Created attachment 177429 [details] Patch: Send SetRootCompositingLayer message to the UI process before SetLayerState message.
Dongseong Hwang
Comment 33 2012-12-04 00:11:40 PST
Created attachment 177431 [details] Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once
Noam Rosenthal
Comment 34 2012-12-04 00:33:40 PST
Comment on attachment 177429 [details] Patch: Send SetRootCompositingLayer message to the UI process before SetLayerState message. View in context: https://bugs.webkit.org/attachment.cgi?id=177429&action=review > Source/WebKit2/ChangeLog:8 > + Send SetRootCompositingLayer message to the UI process firstly. Send SetRootCompositingLayer message to the UI process in the constructor instead of sending it on the first flush. > Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h:138 > + void setRootCompositingLayer(); initializeRootCompositingLayer
WebKit Review Bot
Comment 35 2012-12-04 00:35:20 PST
Comment on attachment 177431 [details] Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once Rejecting attachment 177431 [details] from commit-queue. Failed to run "['/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch', '--status-host=queues.webkit.org', '-..." exit_code: 2 Last 500 characters of output: : /mnt/git/webkit-commit-queue Parsed 2 diffs from patch file(s). patching file Source/WebKit2/ChangeLog Hunk #1 succeeded at 1 with fuzz 3. patching file Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp Hunk #1 FAILED at 390. 1 out of 1 hunk FAILED -- saving rejects to file Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp.rej Failed to run "[u'/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply', u'--force']" exit_code: 1 cwd: /mnt/git/webkit-commit-queue Full output: http://queues.webkit.org/results/15100918
Dongseong Hwang
Comment 36 2012-12-04 01:07:48 PST
Created attachment 177439 [details] Patch: Send SetRootCompositingLayer message to the UI process before SetLayerState message.
Dongseong Hwang
Comment 37 2012-12-04 01:10:24 PST
Created attachment 177441 [details] Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once
WebKit Review Bot
Comment 38 2012-12-04 01:20:52 PST
Comment on attachment 177441 [details] Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once Rejecting attachment 177441 [details] from commit-queue. Failed to run "['/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch', '--status-host=queues.webkit.org', '-..." exit_code: 2 Last 500 characters of output: : /mnt/git/webkit-commit-queue Parsed 2 diffs from patch file(s). patching file Source/WebKit2/ChangeLog Hunk #1 succeeded at 1 with fuzz 3. patching file Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp Hunk #1 FAILED at 390. 1 out of 1 hunk FAILED -- saving rejects to file Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp.rej Failed to run "[u'/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply', u'--force']" exit_code: 1 cwd: /mnt/git/webkit-commit-queue Full output: http://queues.webkit.org/results/15119720
WebKit Review Bot
Comment 39 2012-12-04 01:51:09 PST
Comment on attachment 177439 [details] Patch: Send SetRootCompositingLayer message to the UI process before SetLayerState message. Rejecting attachment 177439 [details] from commit-queue. Failed to run "['/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch', '--status-host=queues.webkit.org', '-..." exit_code: 2 Last 500 characters of output: ripts/update-webkit line 152. Failed to run "['Tools/Scripts/update-webkit', '--chromium', '--force-update']" exit_code: 2 Updating OpenSource From http://git.chromium.org/external/Webkit e1d9afb..eb9e8cc HEAD -> origin/HEAD error: Ref refs/remotes/origin/master is at eb9e8ccd030f66f658b9fcdabeeb134aaaf82783 but expected e1d9afb15f764221f3a35669b6a775bba2812d7f ! e1d9afb..eb9e8cc master -> origin/master (unable to update local ref) Died at Tools/Scripts/update-webkit line 152. Full output: http://queues.webkit.org/results/15138117
Dongseong Hwang
Comment 40 2012-12-04 02:12:08 PST
Created attachment 177452 [details] Patch: Send SetRootCompositingLayer message to the UI process before SetLayerState message.
Dongseong Hwang
Comment 41 2012-12-04 02:13:02 PST
Comment on attachment 177439 [details] Patch: Send SetRootCompositingLayer message to the UI process before SetLayerState message. I think commit bot can not handle this edge case of changelog. I'll post again
WebKit Review Bot
Comment 42 2012-12-05 18:50:58 PST
Comment on attachment 177452 [details] Patch: Send SetRootCompositingLayer message to the UI process before SetLayerState message. Clearing flags on attachment: 177452 Committed r136788: <http://trac.webkit.org/changeset/136788>
WebKit Review Bot
Comment 43 2012-12-05 18:51:04 PST
All reviewed patches have been landed. Closing bug.
Dongseong Hwang
Comment 44 2012-12-05 20:26:34 PST
Reopening to attach new patch.
Dongseong Hwang
Comment 45 2012-12-05 20:26:39 PST
Created attachment 177916 [details] Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once
WebKit Review Bot
Comment 46 2012-12-05 21:10:32 PST
Comment on attachment 177916 [details] Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once Clearing flags on attachment: 177916 Committed r136795: <http://trac.webkit.org/changeset/136795>
WebKit Review Bot
Comment 47 2012-12-05 21:10:38 PST
All reviewed patches have been landed. Closing bug.
Thiago Marcos P. Santos
Comment 48 2012-12-06 06:32:02 PST
http://trac.webkit.org/changeset/136788 is asserting on the EFL bots. 19:09:51.869 28151 ASSERTION FAILED: m_rootLayerID != InvalidWebLayerID 19:09:51.869 28151 /home/buildslave-1/webkit-buildslave/efl-linux-64-debug-wk2/build/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp(331) : void WebKit::LayerTreeRenderer::setLayerState(WebKit::WebLayerID, const WebKit::WebLayerInfo&) 19:09:51.869 28151 1 0x7f24b0eb13b6 WebKit::LayerTreeRenderer::setLayerState(unsigned int, WebKit::WebLayerInfo const&) 19:09:51.869 28151 2 0x7f24b0eaffa7 WTF::FunctionWrapper<void (WebKit::LayerTreeRenderer::*)(unsigned int, WebKit::WebLayerInfo const&)>::operator()(WebKit::LayerTreeRenderer*, unsigned int, WebKit::WebLayerInfo const&) 19:09:51.869 28151 3 0x7f24b0eaf6a2 WTF::BoundFunctionImpl<WTF::FunctionWrapper<void (WebKit::LayerTreeRenderer::*)(unsigned int, WebKit::WebLayerInfo const&)>, void (WebKit::LayerTreeRenderer*, unsigned int, WebKit::WebLayerInfo)>::operator()() 19:09:51.869 28151 4 0x7f24b800ccfa WTF::Function<void ()>::operator()() const 19:09:51.869 28151 5 0x7f24b0eb3084 WebKit::LayerTreeRenderer::syncRemoteContent() 19:09:51.869 28151 6 0x7f24b0eb07cb WebKit::LayerTreeRenderer::paintToCurrentGLContext(WebCore::TransformationMatrix const&, float, WebCore::FloatRect const&, unsigned int) 19:09:51.869 28151 7 0x7f24b0fe4c08 EwkViewImpl::displayTimerFired(WebCore::Timer<EwkViewImpl>*) 19:09:51.869 28151 8 0x7f24b0fec21a WebCore::Timer<EwkViewImpl>::fired() 19:09:51.869 28151 9 0x7f24b445929a WebCore::ThreadTimers::sharedTimerFiredInternal() 19:09:51.869 28151 10 0x7f24b44591bb WebCore::ThreadTimers::sharedTimerFired() 19:09:51.869 28151 11 0x7f24b4e722ed 19:09:51.869 28151 12 0x7f24b016533e _ecore_timer_expired_call 19:09:51.869 28151 13 0x7f24b016550b _ecore_timer_expired_timers_call 19:09:51.869 28151 14 0x7f24b0162421 19:09:51.869 28151 15 0x7f24b0162ab7 ecore_main_loop_begin 19:09:51.869 28151 16 0x433a79 WTR::TestController::platformRunUntil(bool&, double) 19:09:51.869 28151 17 0x41eba0 WTR::TestController::runUntil(bool&, WTR::TestController::TimeoutDuration) 19:09:51.869 28151 18 0x425c5a WTR::TestInvocation::invoke() 19:09:51.869 28151 19 0x41e8d8 WTR::TestController::runTest(char const*) 19:09:51.869 28151 20 0x41ea11 WTR::TestController::runTestingServerLoop() 19:09:51.869 28151 21 0x41eaab WTR::TestController::run() 19:09:51.869 28151 22 0x41c4c1 WTR::TestController::TestController(int, char const**) 19:09:51.869 28151 23 0x433c12 main 19:09:51.869 28151 24 0x7f24aecc376d __libc_start_main 19:09:51.869 28151 25 0x41ae39
Dongseong Hwang
Comment 49 2012-12-07 19:34:29 PST
The 3rd and 4rd patches were rolled out due to misunderstanding. I explained in https://bugs.webkit.org/show_bug.cgi?id=104260#c4 I'll commit again.
Dongseong Hwang
Comment 50 2012-12-07 19:37:27 PST
(In reply to comment #48) > http://trac.webkit.org/changeset/136788 is asserting on the EFL bots. > > 19:09:51.869 28151 ASSERTION FAILED: m_rootLayerID != InvalidWebLayerID > 19:09:51.869 28151 /home/buildslave-1/webkit-buildslave/efl-linux-64-debug-wk2/build/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp(331) : void WebKit::LayerTreeRenderer::setLayerState(WebKit::WebLayerID, const WebKit::WebLayerInfo&) > 19:09:51.869 28151 1 0x7f24b0eb13b6 WebKit::LayerTreeRenderer::setLayerState(unsigned int, WebKit::WebLayerInfo const&) > 19:09:51.869 28151 2 0x7f24b0eaffa7 WTF::FunctionWrapper<void (WebKit::LayerTreeRenderer::*)(unsigned int, WebKit::WebLayerInfo const&)>::operator()(WebKit::LayerTreeRenderer*, unsigned int, WebKit::WebLayerInfo const&) > 19:09:51.869 28151 3 0x7f24b0eaf6a2 WTF::BoundFunctionImpl<WTF::FunctionWrapper<void (WebKit::LayerTreeRenderer::*)(unsigned int, WebKit::WebLayerInfo const&)>, void (WebKit::LayerTreeRenderer*, unsigned int, WebKit::WebLayerInfo)>::operator()() > 19:09:51.869 28151 4 0x7f24b800ccfa WTF::Function<void ()>::operator()() const > 19:09:51.869 28151 5 0x7f24b0eb3084 WebKit::LayerTreeRenderer::syncRemoteContent() > 19:09:51.869 28151 6 0x7f24b0eb07cb WebKit::LayerTreeRenderer::paintToCurrentGLContext(WebCore::TransformationMatrix const&, float, WebCore::FloatRect const&, unsigned int) > 19:09:51.869 28151 7 0x7f24b0fe4c08 EwkViewImpl::displayTimerFired(WebCore::Timer<EwkViewImpl>*) > 19:09:51.869 28151 8 0x7f24b0fec21a WebCore::Timer<EwkViewImpl>::fired() > 19:09:51.869 28151 9 0x7f24b445929a WebCore::ThreadTimers::sharedTimerFiredInternal() > 19:09:51.869 28151 10 0x7f24b44591bb WebCore::ThreadTimers::sharedTimerFired() > 19:09:51.869 28151 11 0x7f24b4e722ed > 19:09:51.869 28151 12 0x7f24b016533e _ecore_timer_expired_call > 19:09:51.869 28151 13 0x7f24b016550b _ecore_timer_expired_timers_call > 19:09:51.869 28151 14 0x7f24b0162421 > 19:09:51.869 28151 15 0x7f24b0162ab7 ecore_main_loop_begin > 19:09:51.869 28151 16 0x433a79 WTR::TestController::platformRunUntil(bool&, double) > 19:09:51.869 28151 17 0x41eba0 WTR::TestController::runUntil(bool&, WTR::TestController::TimeoutDuration) > 19:09:51.869 28151 18 0x425c5a WTR::TestInvocation::invoke() > 19:09:51.869 28151 19 0x41e8d8 WTR::TestController::runTest(char const*) > 19:09:51.869 28151 20 0x41ea11 WTR::TestController::runTestingServerLoop() > 19:09:51.869 28151 21 0x41eaab WTR::TestController::run() > 19:09:51.869 28151 22 0x41c4c1 WTR::TestController::TestController(int, char const**) > 19:09:51.869 28151 23 0x433c12 main > 19:09:51.869 28151 24 0x7f24aecc376d __libc_start_main > 19:09:51.869 28151 25 0x41ae39 It showed I made a mistake. I'll investigate before repost. :) thank you for reporting.
Dongseong Hwang
Comment 51 2012-12-09 20:44:54 PST
Comment on attachment 177452 [details] Patch: Send SetRootCompositingLayer message to the UI process before SetLayerState message. View in context: https://bugs.webkit.org/attachment.cgi?id=177452&action=review > Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp:122 > + initializeRootCompositingLayer(); EFL can not send messages to UI Process at this time, although Qt can. It causes EFL hitting ASSERT in Bug 104257. I'll send SetRootCompositingLayer message at the first flush time.
Dongseong Hwang
Comment 52 2012-12-09 20:50:33 PST
Created attachment 178464 [details] Patch: Send SetRootCompositingLayer message to the UI process before SetLayerState message.
WebKit Review Bot
Comment 53 2012-12-09 22:46:56 PST
Comment on attachment 178464 [details] Patch: Send SetRootCompositingLayer message to the UI process before SetLayerState message. Clearing flags on attachment: 178464 Committed r137109: <http://trac.webkit.org/changeset/137109>
WebKit Review Bot
Comment 54 2012-12-09 22:47:03 PST
All reviewed patches have been landed. Closing bug.
Dongseong Hwang
Comment 55 2012-12-12 21:33:54 PST
Reopening to attach new patch.
Dongseong Hwang
Comment 56 2012-12-12 22:37:33 PST
Created attachment 179199 [details] Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once
Dongseong Hwang
Comment 57 2012-12-12 22:40:40 PST
(In reply to comment #56) > Created an attachment (id=179199) [details] > Patch This patch rollouted in Bug 104260 due to other reason. Bug 104518 fixed the reason, so I post again this patch.
Dongseong Hwang
Comment 58 2012-12-12 22:43:32 PST
Comment on attachment 179199 [details] Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once Turn on r? because code is little changed. Previous patch added following assertion. + ASSERT(layerID != m_rootLayerID); + ASSERT(layerID != InvalidWebLayerID); This patch added following assertion. + ASSERT(layerID != InvalidCoordinatedLayerID); + ASSERT(m_rootLayerID == InvalidCoordinatedLayerID); This assertion is more strict.
Noam Rosenthal
Comment 59 2012-12-13 07:15:07 PST
Comment on attachment 179199 [details] Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once Names were changed....
Dongseong Hwang
Comment 60 2012-12-13 16:22:19 PST
Created attachment 179369 [details] Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once
Dongseong Hwang
Comment 61 2012-12-13 16:26:42 PST
(In reply to comment #59) > (From update of attachment 179199 [details]) > Names were changed.... You are right! :$
WebKit Review Bot
Comment 62 2012-12-13 16:43:38 PST
Comment on attachment 179369 [details] Patch: Clarify LayerTreeRenderer::setRootLayerID() can be called only once Clearing flags on attachment: 179369 Committed r137685: <http://trac.webkit.org/changeset/137685>
WebKit Review Bot
Comment 63 2012-12-13 16:43:46 PST
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.