Closed
Bug 1448896
Opened 6 years ago
Closed 6 years ago
https://lab.hakim.se/linjer/#diagonal flickers with WR
Categories
(Core :: Graphics: WebRender, defect, P1)
Tracking
()
RESOLVED
FIXED
mozilla61
Tracking | Status | |
---|---|---|
firefox-esr52 | --- | unaffected |
firefox59 | --- | unaffected |
firefox60 | --- | unaffected |
firefox61 | --- | unaffected |
People
(Reporter: mayankleoboy1, Assigned: sotaro)
References
(Blocks 1 open bug, )
Details
(Keywords: nightly-community)
Attachments
(2 files, 1 obsolete file)
26.48 KB,
text/plain
|
Details | |
18.66 KB,
patch
|
nical
:
review+
|
Details | Diff | Splinter Review |
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0 Build ID: 20180325220121 Steps to reproduce: 1. Create new profile on nightly win10x64 intel iGPU 2. enable WR. Restart 3. Go to https://lab.hakim.se/linjer/#diagonal Actual results: page flicker Expected results: not so
Reporter | ||
Updated•6 years ago
|
Reproduces for me on Dell XPS with Nvidia card.
Comment 2•6 years ago
|
||
I looked at it on our reference machine. Preliminary conclusion is that it's the same problem with 2D transforms/scrolling Nicola has been looking into, and it is addressed in https://github.com/servo/webrender/pull/2568
Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true
Comment 3•6 years ago
|
||
Debian Testing (KDE, Radeon RX480) latest try build from bug 1447998 comment 5 (same results with the current Nightly): > mozregression --repo try --launch a92e61fbb71b3b6e9825e5bb15e58fd9887fb40f --pref gfx.webrender.all:true gfx.canvas.azure.accelerated:false startup.homepage_welcome_url:"https://lab.hakim.se/linjer/#diagonal" sometimes, e.g. after tab switching or hovering some tabs, it's dark for some milliseconds (does not happen with a non-WR Nightly) > mozregression --repo try --launch a92e61fbb71b3b6e9825e5bb15e58fd9887fb40f --pref gfx.webrender.all:true gfx.canvas.azure.accelerated:true startup.homepage_welcome_url:"https://lab.hakim.se/linjer/#diagonal" skia-gl: flickering
Comment 4•6 years ago
|
||
Jan, thanks for the heads up! I'm going to look at it at greater depth then, since it's not addressed by the segment clips PR.
Updated•6 years ago
|
Blocks: webrender-site-issues
status-firefox59:
--- → unaffected
status-firefox60:
--- → unaffected
status-firefox61:
--- → unaffected
status-firefox-esr52:
--- → unaffected
Keywords: nightly-community
OS: Unspecified → All
Comment 5•6 years ago
|
||
I'm getting interesting results so far: Linux - no issues Windows (any HW) - occasional flickering OSX - crash
Comment 6•6 years ago
|
||
I've been looking at the issue lately. It's not OS dependent, it's timing-sensitive. Sometimes, Gecko sends WR a scene with main display list using a pipeline (for an external texture) that has not been provided. Currently, WR ignores that silently (and I'll fix this). Sprinkling the logging over WR bridge parent, it looks like we always follow-up with that dependent DL (via `ApplyAsyncImages`) after the main frame is sent. So what may happen is - some circumstances forcing WR to display a frame in the moment between those DLs arriving.
Comment 7•6 years ago
|
||
Sotaro, this seems to be your area of expertise. Here is a rehash of what happens: 1. the user has a canvas, which gets reset it's width/height each frame. This forces us to re-create the canvas as well as the associated WR pipeline for it. 2. when we fill up the main transaction (containing our root pipeline/display list), we remove the old pipeline associated with the canvas (in WebRenderBridgeChild::RemovePipelineIdForCompositable), create a new one, and have an iframe item associated with this new pipeline (in nsDisplayCanvas::CreateWebRenderCommands). 3. no display list for that new pipeline is provided as a part of the main transaction. When WR receives it and builds it, it fails to find the associated DL and ignores the iframe item. If, for some reason, it decides to refresh the frame (say, due to a scrolling event), the canvas is not being rendered, thus the flash occurs (this bug!). 4. the new DL is provided (in AsyncImagePipelineManager::ApplyAsyncImages) later on by Gecko Roughly, I could see two possible ways to approach this: A: move the new DL construction earlier, to be a part of the main transaction B: hold on to the old pipeline until the new DL is provided Both are non-trivial, and would take me quite a bit of time to test. Perhaps, you could see better.
Assignee: kvark → nobody
Status: ASSIGNED → NEW
Flags: needinfo?(sotaro.ikeda.g)
Assignee | ||
Comment 8•6 years ago
|
||
Thanks for the detailed investigation! I could reproduce the problem on win10. I take a look.
Assignee: nobody → sotaro.ikeda.g
Flags: needinfo?(sotaro.ikeda.g)
Assignee | ||
Comment 9•6 years ago
|
||
Some messages that related to async image pipeline and external image are sent as independent messages to WebRenderBridgeParent. It seems better that the messages are sent as part of transaction as WebRenderParentCommands.
Assignee | ||
Comment 10•6 years ago
|
||
Assignee | ||
Comment 11•6 years ago
|
||
https://treeherder.mozilla.org/#/jobs?repo=try&revision=4d19f61ce37005a239320d78d24e2993979d71ad
Assignee | ||
Comment 12•6 years ago
|
||
attachment 8967284 [details] [diff] [review] addressed the problem for me.
Assignee | ||
Comment 13•6 years ago
|
||
Relaxed assert.
Attachment #8967284 -
Attachment is obsolete: true
Assignee | ||
Comment 14•6 years ago
|
||
https://treeherder.mozilla.org/#/jobs?repo=try&revision=1968797a8ca3f3526efd7be71c222c53ec5e92bc
Assignee | ||
Updated•6 years ago
|
Attachment #8967297 -
Flags: review?(nical.bugzilla)
Updated•6 years ago
|
Attachment #8967297 -
Flags: review?(nical.bugzilla) → review+
Comment 15•6 years ago
|
||
Debian Testing, Radeon RX480 mozregression --launch 2018-04-11 --pref gfx.webrender.all:true startup.homepage_welcome_url:"https://lab.hakim.se/linjer/#diagonal" mozregression --launch 2018-04-11 --pref gfx.webrender.all:true gfx.canvas.azure.accelerated:true startup.homepage_welcome_url:"https://lab.hakim.se/linjer/#diagonal" -> bad like in comment 3 mozregression --repo try --launch 1968797a8ca3f3526efd7be71c222c53ec5e92bc --pref gfx.webrender.all:true startup.homepage_welcome_url:"https://lab.hakim.se/linjer/#diagonal" mozregression --repo try --launch 1968797a8ca3f3526efd7be71c222c53ec5e92bc --pref gfx.webrender.all:true gfx.canvas.azure.accelerated:true startup.homepage_welcome_url:"https://lab.hakim.se/linjer/#diagonal" -> fixed Thank you!
Comment 16•6 years ago
|
||
Pushed by sikeda@mozilla.com: https://hg.mozilla.org/integration/mozilla-inbound/rev/810a838ce26e Change some messages to WebRenderParentCommand r=nical
Comment 17•6 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/810a838ce26e
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla61
You need to log in
before you can comment on or make changes to this bug.
Description
•