Closed
Bug 1475187
Opened 6 years ago
Closed 6 years ago
Remove AsyncImagePipelineManager::ApplyAsyncImages() call from WebRenderBridgeParent::RecvSetDisplayList()
Categories
(Core :: Graphics: WebRender, enhancement, P3)
Core
Graphics: WebRender
Tracking
()
RESOLVED
FIXED
mozilla63
Tracking | Status | |
---|---|---|
firefox63 | --- | fixed |
People
(Reporter: sotaro, Assigned: sotaro)
References
(Blocks 1 open bug)
Details
(Whiteboard: [gfx-noted])
Attachments
(1 file, 4 obsolete files)
ApplyAsyncImages() is called in WebRenderBridgeParent::RecvSetDisplayList(). It seems redundant. We could set default display list in WebRenderBridgeParent::AddPipelineIdForCompositable().
Assignee | ||
Updated•6 years ago
|
Assignee: nobody → sotaro.ikeda.g
Assignee | ||
Comment 1•6 years ago
|
||
Assignee | ||
Comment 2•6 years ago
|
||
Assignee | ||
Updated•6 years ago
|
Attachment #8991563 -
Flags: review?(bugmail)
Comment 3•6 years ago
|
||
Comment on attachment 8991563 [details] [diff] [review]
patch - Remove AsyncImagePipelineManager::ApplyAsyncImages() call from WebRenderBridgeParent::RecvSetDisplayList()
Review of attachment 8991563 [details] [diff] [review]:
-----------------------------------------------------------------
Seems reasonable
::: gfx/layers/wr/WebRenderBridgeParent.cpp
@@ +1076,5 @@
> mAsyncCompositables.emplace(wr::AsUint64(aPipelineId), wrHost);
> mAsyncImageManager->AddAsyncImagePipeline(aPipelineId, wrHost);
>
> + // The display list that we're sending to WR in the transaction might contain
> + // references to the pipelines that we just added to the async image manager.
Replace the first sentence of this comment with this:
"If this is being called from WebRenderBridgeParent::RecvSetDisplayList, then aTxn might contain a display list that references pipelines that we just added to the async image manager."
I think that makes it a bit more clear which display list is being referred to.
Attachment #8991563 -
Flags: review?(bugmail) → review+
Assignee | ||
Comment 4•6 years ago
|
||
Attachment #8991563 -
Attachment is obsolete: true
Attachment #8991768 -
Flags: review+
Assignee | ||
Updated•6 years ago
|
Attachment #8991563 -
Attachment is obsolete: false
Assignee | ||
Updated•6 years ago
|
Attachment #8991563 -
Attachment is obsolete: true
Assignee | ||
Comment 5•6 years ago
|
||
(In reply to Sotaro Ikeda [:sotaro] from comment #2)
> https://treeherder.mozilla.org/#/
> jobs?repo=try&revision=d5442f352c8c203fb74f0a43d1439f7ef4a74c6d&selectedJob=1
> 87795752
Some reftests failure on windows. attachment 8991768 [details] [diff] [review] defters actual display list update to ApplyAsyncImages() in WebRenderBridgeParent::CompositeToTarget(). But the display list update happened async way. Then snapshot did not include valid display lists of async image pipelines.
Comment 6•6 years ago
|
||
(In reply to Sotaro Ikeda [:sotaro] from comment #5)
> [review] defters actual display list update to ApplyAsyncImages() in
> WebRenderBridgeParent::CompositeToTarget(). But the display list update
> happened async way. Then snapshot did not include valid display lists of
> async image pipelines.
By "actual display list update" I assume you mean the non-empty display list? If so then maybe a better solution is to do that display list update when we get the TOpUpdateAsyncImagePipeline command in WebRenderBridgeParent. We would effectively be changing it so that instead of sending the async image pipelines along with the main pipeline, we'd send the async image pipeline whenever we get it from the content. In the case of getting a snapshot, the existing FlushSceneBuilds call would flush both the main pipeline and the async image pipelines before going to CompositeToTarget.
Also, it's not really clear to me why we need to do this at all in order to fix bug 1467768. I thought we would be able to fix that without having to move this stuff around.
Updated•6 years ago
|
Assignee | ||
Comment 7•6 years ago
|
||
(In reply to Kartikaya Gupta (email:kats@mozilla.com) from comment #6)
>
> Also, it's not really clear to me why we need to do this at all in order to
> fix bug 1467768. I thought we would be able to fix that without having to
> move this stuff around.
Thanks for the advice. I agree. I am going to remove the dependency. This bug is for removing ApplyAsyncImages() call in RecvSetDisplayList() for reducing unnecessary task. At first, I thought that ApplyAsyncImages() call could be only from CompositeToTarget(). But it was bad.
Assignee | ||
Comment 8•6 years ago
|
||
(In reply to Kartikaya Gupta (email:kats@mozilla.com) from comment #6)
> By "actual display list update" I assume you mean the non-empty display
> list? If so then maybe a better solution is to do that display list update
> when we get the TOpUpdateAsyncImagePipeline command in
> WebRenderBridgeParent.
UpdateAsyncImagePipeline is not enough to handle all cases, since it is not called during WebRenderBridgeParent::RecvEmptyTransaction(). And updating image key is necessary when wr::ImageKey is created for AsyncImagePipeline.
Assignee | ||
Comment 9•6 years ago
|
||
(In reply to Sotaro Ikeda [:sotaro] from comment #8)
>
> UpdateAsyncImagePipeline is not enough to handle all cases, since it is not
> called during WebRenderBridgeParent::RecvEmptyTransaction(). And updating
> image key is necessary when wr::ImageKey is created for AsyncImagePipeline.
Ah, to address this bug, UpdateAsyncImagePipeline seems enough. Another case is still handled by ApplyAsyncImages() in CompositeToTarget().
Comment hidden (obsolete) |
Comment hidden (obsolete) |
Assignee | ||
Comment 12•6 years ago
|
||
Attachment #8992825 -
Attachment is obsolete: true
Assignee | ||
Comment 13•6 years ago
|
||
Assignee | ||
Comment 14•6 years ago
|
||
attachment 8992826 [details] [diff] [review] uses OpUpdateAsyncImagePipeline to apply AsyncImage for Pipeline and adds OpUpdatedAsyncImagePipeline to apply AsyncImage for Pipeline during EmptyTransaction. With then, all applying AsyncImage for canvas is done with them.
In WebRenderBridgeParent::CompositeToTarget(), applying AsyncImages are done only for videos(via ImageBridge).
Assignee | ||
Comment 15•6 years ago
|
||
Comment on attachment 8992826 [details] [diff] [review]
patch - Remove AsyncImagePipelineManager::ApplyAsyncImages() call from WebRenderBridgeParent::RecvSetDisplayList()
:kats, can you review the patch again?
Attachment #8992826 -
Flags: review?(bugmail)
Comment 16•6 years ago
|
||
Comment on attachment 8992826 [details] [diff] [review]
patch - Remove AsyncImagePipelineManager::ApplyAsyncImages() call from WebRenderBridgeParent::RecvSetDisplayList()
Review of attachment 8992826 [details] [diff] [review]:
-----------------------------------------------------------------
This seems reasonable. It would have been easier to review if you extracted that helper function in one patch and did the rest of the work in a second patch.
Attachment #8992826 -
Flags: review?(bugmail) → review+
Assignee | ||
Comment 17•6 years ago
|
||
Thanks!
Comment 18•6 years ago
|
||
Pushed by sikeda@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/d99ef0aa6617
Remove AsyncImagePipelineManager::ApplyAsyncImages() call from WebRenderBridgeParent::RecvSetDisplayList() r=kats
Comment 19•6 years ago
|
||
bugherder |
Status: NEW → RESOLVED
Closed: 6 years ago
status-firefox63:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla63
Comment 20•6 years ago
|
||
Perf win!
== Change summary for alert #14437 (as of Wed, 18 Jul 2018 21:14:53 GMT) ==
Improvements:
27% glterrain windows10-64-qr opt e10s stylo 2.28 -> 1.66
For up to date results, see: https://treeherder.mozilla.org/perf.html#/alerts?id=14437
You need to log in
before you can comment on or make changes to this bug.
Description
•