Closed Bug 1535507 Opened 10 months ago Closed 10 months ago

Poor RDL performance watching youtube with live chat

Categories

(Core :: Web Painting, enhancement)

enhancement
Not set

Tracking

()

RESOLVED FIXED
mozilla68
Tracking Status
firefox67 --- wontfix
firefox68 --- fixed

People

(Reporter: mattwoodrow, Assigned: mattwoodrow)

References

(Blocks 1 open bug, Regressed 2 open bugs)

Details

Attachments

(3 files)

Looks like the video element is being included in the area to build display items for, and we're building a lot more than we should otherwise need.

If the frame supports it (stacking context + containing block for fixed), and a descendant was
modified, we would have created an override dirty region with just the area of that descendant.
In the case where no descendants are modified, we should use an empty rect, rather than
the area inherited from our parent.

This fixes the case where we forcibly build position:fixed frames (since they might async
scroll differently to the rest of the page), but we only need to build the container item,
not the whole frame subtree within it.

Added a test that shows us building the non-intersecting position:fixed, but not items within it.

Depends on D23609

Pushed by mwoodrow@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/f2061889974a
Don't force display item rebuilding for ActiveLayerTracker expiry, since we should only need to update the Layer tree. r=miko
https://hg.mozilla.org/integration/autoland/rev/a9c6e9e27b17
Don't create new display items for InvalidateLayer, since only the Layer tree should need to change. r=miko
https://hg.mozilla.org/integration/autoland/rev/f7a60828b0ad
Assume that we have an empty display list building override rect for frames that support it, even if an explicit one isn't present. r=miko

Backed out 3 changesets (Bug 1535507) for webvtt/rendering/cues-with-video/processing-model/selectors/cue* failures

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&selectedJob=234686704&revision=f7a60828b0ad40b755c22b978ac85c6d1d7f00db

Backout link: https://hg.mozilla.org/integration/autoland/rev/5fd21107e39400b6895c6f7b2859f933d0f6bfda

Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=234676446&repo=autoland&lineNumber=40071

[task 2019-03-19T00:09:58.095Z] 00:09:58 INFO - TEST-START | /webvtt/rendering/cues-with-video/processing-model/selectors/cue/cue_selector_single_colon.html
[task 2019-03-19T00:09:58.103Z] 00:09:58 INFO - PID 15701 | 1552954198094 Marionette INFO Testing http://web-platform.test:8000/webvtt/rendering/cues-with-video/processing-model/selectors/cue/cue_selector_single_colon.html == http://web-platform.test:8000/webvtt/rendering/cues-with-video/processing-model/selectors/cue/cue_selector_single_colon-ref.html
[task 2019-03-19T00:09:58.123Z] 00:09:58 INFO - PID 15701 | JavaScript error: resource:///modules/sessionstore/SessionStore.jsm, line 2383: TypeError: tabbrowser.getTabForBrowser is not a function
[task 2019-03-19T00:09:58.124Z] 00:09:58 INFO - PID 15701 | ++DOMWINDOW == 10 (0x7f4f9240e000) [pid = 15859] [serial = 10] [outer = 0x7f4f9c115d40]
[task 2019-03-19T00:09:58.185Z] 00:09:58 INFO - PID 15701 | JavaScript error: resource:///modules/sessionstore/SessionStore.jsm, line 2383: TypeError: tabbrowser.getTabForBrowser is not a function
[task 2019-03-19T00:09:58.186Z] 00:09:58 INFO - PID 15701 | ++DOMWINDOW == 11 (0x7f4f9be8c000) [pid = 15859] [serial = 11] [outer = 0x7f4f9c115d40]
[task 2019-03-19T00:09:58.267Z] 00:09:58 INFO - PID 15701 | 1552954198261 Marionette INFO No differences allowed
[task 2019-03-19T00:09:58.267Z] 00:09:58 INFO - PID 15701 | 1552954198261 Marionette INFO Found 1060 pixels different, maximum difference per channel 2
[task 2019-03-19T00:09:58.325Z] 00:09:58 INFO - TEST-UNEXPECTED-FAIL | /webvtt/rendering/cues-with-video/processing-model/selectors/cue/cue_selector_single_colon.html | Testing http://web-platform.test:8000/webvtt/rendering/cues-with-video/processing-model/selectors/cue/cue_selector_single_colon.html == http://web-platform.test:8000/webvtt/rendering/cues-with-video/processing-model/selectors/cue/cue_selector_single_colon-ref.html
[task 2019-03-19T00:09:58.325Z] 00:09:58 INFO - REFTEST IMAGE 1 (TEST): data:image/png;base64,iVBORw0KGgoAAAANSUhEUg
[task 2019-03-19T00:09:58.325Z] 00:09:58 INFO - REFTEST IMAGE 2 (REFERENCE): data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA
[task 2019-03-19T00:09:58.325Z] 00:09:58 INFO - TEST-INFO took 227ms

Flags: needinfo?(matt.woodrow)
Pushed by mwoodrow@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/74d9f16af0bf
Don't force display item rebuilding for ActiveLayerTracker expiry, since we should only need to update the Layer tree. r=miko
https://hg.mozilla.org/integration/autoland/rev/48726c586c4f
Don't create new display items for InvalidateLayer, since only the Layer tree should need to change. r=miko
https://hg.mozilla.org/integration/autoland/rev/458563d6a69e
Assume that we have an empty display list building override rect for frames that support it, even if an explicit one isn't present. r=miko
Flags: needinfo?(matt.woodrow)
Pushed by mwoodrow@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/685208691386
Don't force display item rebuilding for ActiveLayerTracker expiry, since we should only need to update the Layer tree. r=miko
https://hg.mozilla.org/integration/autoland/rev/cf1aab57dbef
Don't create new display items for InvalidateLayer, since only the Layer tree should need to change. r=miko
https://hg.mozilla.org/integration/autoland/rev/2bf6bddf9a8a
Assume that we have an empty display list building override rect for frames that support it, even if an explicit one isn't present. r=miko
Flags: needinfo?(matt.woodrow)
Status: NEW → RESOLVED
Closed: 10 months ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla68
https://hg.mozilla.org/projects/ash/rev/68520869138680d87a1f878896e8bc0e749ca884
Bug 1535507 - Don't force display item rebuilding for ActiveLayerTracker expiry, since we should only need to update the Layer tree. r=miko

https://hg.mozilla.org/projects/ash/rev/cf1aab57dbef00080a52661705f3012ae0553dd0
Bug 1535507 - Don't create new display items for InvalidateLayer, since only the Layer tree should need to change. r=miko

https://hg.mozilla.org/projects/ash/rev/2bf6bddf9a8a5c52222273ee787bfca7e6c97394
Bug 1535507 - Assume that we have an empty display list building override rect for frames that support it, even if an explicit one isn't present. r=miko
Depends on: 1540908
Regressions: 1547277
Regressions: 1585626
Regressions: 1604504
You need to log in before you can comment on or make changes to this bug.