Non-existent OS compositor surfaces getting destroyed during window resizing
Categories
(Core :: Graphics: WebRender, defect, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox72 | --- | fixed |
People
(Reporter: mstange, Assigned: gw)
References
(Blocks 1 open bug)
Details
Attachments
(2 files)
(deleted),
patch
|
Details | Diff | Splinter Review | |
(deleted),
text/x-phabricator-request
|
Details |
STR:
- Apply the patch queue ending in D50726 on macOS.
- Set gfx.webrender.compositor to true and go to a simple website.
- Aggressively resize the window.
Expected results:
No messages of the form deleting non-existent layer
should be printed to the console.
Actual results:
Every now and then, lots of those messages are printed.
Updated•5 years ago
|
Assignee | ||
Updated•5 years ago
|
Assignee | ||
Comment 1•5 years ago
|
||
I haven't been able to reproduce this yet. I suspect it probably occurs when the backend is producing frames too fast, and some of them get dropped. I'll try a full optimized build, which might produce frames fast enough to repro it.
Assignee | ||
Comment 2•5 years ago
|
||
I still can't reproduce this with an optimized build. Does it still occur on your machine? Does it occur more often with specific pages?
Reporter | ||
Comment 3•5 years ago
|
||
I can still reproduce it on https://news.ycombinator.com/. New window with only that page and no other tabs.
Assignee | ||
Comment 4•5 years ago
|
||
For whatever reason, I still can't reproduce this locally.
However, I think I can see how this could occur. I've attached a patch that will hopefully fix the issue. Could you apply it locally and see if it fixes the issue for you?
If it does, I'll create a proper phab review for this.
Assignee | ||
Updated•5 years ago
|
Reporter | ||
Comment 5•5 years ago
|
||
Yes, this patch seems to fix it! It was fairly easy to reproduce without the patch and I can't reproduce it anymore with the patch. Thanks!
Assignee | ||
Comment 6•5 years ago
|
||
If the render backend is producing frames too quickly for the
renderer thread to consume, old frames are dropped in favor of
the most recent frame.
When this occurs, we need to ensure that any native surface updates
from the skipped frame are also applied. Otherwise, the state of
the native surfaces list can get out of sync between the renderer
and render backend threads.
Comment 7•5 years ago
|
||
I hit the "land this" button by mistake, but there is no way to cancel it now.
Comment 9•5 years ago
|
||
bugherder |
Comment 10•5 years ago
|
||
Hi Glenn, is qa needed here? If so, could you provide us with some steps please? Thanks!
Description
•