Closed Bug 1561178 Opened 1 year ago Closed 1 year ago

Create a PVideoBridge connection from the RDD process to the parent process

Categories

(Core :: Audio/Video: Playback, defect, P2)

defect

Tracking

()

RESOLVED FIXED
mozilla69
Tracking Status
firefox69 --- fixed

People

(Reporter: mattwoodrow, Assigned: mattwoodrow)

References

(Blocks 1 open bug, Regressed 1 open bug)

Details

Attachments

(6 files)

As discussed in bug 1539043, we're going to get best performance by sharing Shmem directly from the RDD to the compositor.

We have the PVideoBridge protocol for doing this (used by the GPU process decoder), so we want to create these for connecting the RDD process, and then use that when possible.

The simplest case of this is connecting the RDD process to the parent process, which is used when we don't have a GPU process (OSX and Android always, sometimes on the others). The parent process also can't crash (and recover) so we only need to set this up on init.

I have a WIP patch that seems to work for this.

Blocks: 1561179

In the future we're going to want VideoBridge connections from the RDD process into both the parent process and the GPU process.
This does the preparation work for unifying the way we create VideoBridges (using Endpoints, required for cross-process connections),
and detects which one to use based on where the video will be composited.

Depends on D35965

Priority: -- → P2
Pushed by mwoodrow@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/e1521d8fbe90
Combine the two video RecvOutput methods and switch based on the descriptor type. r=jya
https://hg.mozilla.org/integration/autoland/rev/557f55a90c8a
Make passing a TextureFactoryIdentifier optional, and pass one whenever we can. r=jya
https://hg.mozilla.org/integration/autoland/rev/d449e8c96753
Use Endpoints for VideoBridge construction, and support the possibility that there are multiple at the same time. r=jya
https://hg.mozilla.org/integration/autoland/rev/6f206fecaa56
Create a VideoBridge connection from the RDD process to the parent process. r=jya
https://hg.mozilla.org/integration/autoland/rev/059c79722bcb
Shutdown video bridge for all processes that might be using it. r=jya
https://hg.mozilla.org/integration/autoland/rev/2150f683f8a8
Initialize gfxVars in the RDD process. r=jya

Backed out 6 changesets (bug 1561178) for profile guided optimization build fail in artifacts\profdata.tar.xz

Backout: https://hg.mozilla.org/integration/autoland/rev/89fbb2008b608b3b49f71ff5b6d73971d967e8d5

Failure push: https://treeherder.mozilla.org/#/jobs?repo=autoland&revision=2150f683f8a80e76c1da36440249f3cc423cccbe

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

[task 2019-06-27T04:33:36.003Z] pipe error: 109: file z:/task_1561601812/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 341
[task 2019-06-27T04:33:36.003Z] [GPU 3668, Chrome_ChildThread] WARNING: pipe error: 109: file z:/task_1561601812/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 341
[task 2019-06-27T04:33:36.003Z] [GPU 3668, Chrome_ChildThread] WARNING: pipe error: 109: file z:/task_1561601812/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 341
[task 2019-06-27T04:33:36.003Z] [Parent 692, Gecko_IOThread] WARNING: pipe error: 109: file z:/task_1561601812/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 341
[task 2019-06-27T04:33:36.003Z] [Parent 692, Gecko_IOThread] WARNING: pipe error: 109: file z:/task_1561601812/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 341
[task 2019-06-27T04:33:36.003Z] [GPU 3668, Chro
[task 2019-06-27T04:33:36.003Z] ###!!! [Child][RunMessage] Error: Channel closing: too late to send/recv, messages will be lost
[task 2019-06-27T04:33:36.003Z]
[task 2019-06-27T04:33:36.003Z] me_ChildThread] WARNING: pipe error: 109: file z:/task_1561601812/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 341
[task 2019-06-27T04:33:36.003Z] [GPU 3668, Chrome_ChildThread] WARNING: pipe error: 109: file z:/task_1561601812/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 341
[task 2019-06-27T04:33:36.003Z] [Parent 692, Gecko_IOThread] WARNING: pipe error: 109: file z:/task_1561601812/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 341
[task 2019-06-27T04:33:36.003Z] [Parent 692, Gecko_IOThread] WARNING: pipe error: 109: file z:/task_1561601812/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 341
[task 2019-06-27T04:33:36.310Z] [Parent 692, Gecko_IOThread] WARNING: pipe error: 109: file z:/task_1561601812/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 341
[task 2019-06-27T04:33:36.310Z] [GPU 3668, Chrome_ChildThread] WARNING: pipe error: 109: file z:/task_1561601812/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 341
[task 2019-06-27T04:33:36.310Z]
[task 2019-06-27T04:33:36.310Z] WARNING | IO Completion Port failed to signal process shutdown
[task 2019-06-27T04:33:36.310Z] Parent process 4056 exited with children alive:
[task 2019-06-27T04:33:36.310Z] PIDS: 3668
[task 2019-06-27T04:33:36.310Z] Attempting to kill them, but no guarantee of success
[taskcluster 2019-06-27T04:33:36.366Z] Exit Code: 1
[taskcluster 2019-06-27T04:33:36.366Z] User Time: 0s
[taskcluster 2019-06-27T04:33:36.366Z] Kernel Time: 0s
[taskcluster 2019-06-27T04:33:36.366Z] Wall Time: 14m18.4925107s
[taskcluster 2019-06-27T04:33:36.366Z] Result: FAILED
[taskcluster 2019-06-27T04:33:36.366Z] === Task Finished ===
[taskcluster 2019-06-27T04:33:36.366Z] Task Duration: 14m18.4925107s
[taskcluster:error] Uploading error artifact public/build/profdata.tar.xz from file build/src/artifacts/profdata.tar.xz with message "Could not read file 'Z:\task_1561608513\build\src\artifacts\profdata.tar.xz'", reason "file-missing-on-worker" and expiry 2020-06-26T03:37:35.775Z
[taskcluster:error] TASK FAILURE during artifact upload: file-missing-on-worker: Could not read file 'Z:\task_1561608513\build\src\artifacts\profdata.tar.xz'
[taskcluster 2019-06-27T04:33:37.386Z] Uploading artifact public/build/profile-run-1.log from file build/src/artifacts/profile-run-1.log with content encoding "gzip", mime type "text/plain" and expiry 2020-06-26T03:37:35.775Z
[taskcluster:error] Uploading error artifact public/build/profile-run-2.log from file build/src/artifacts/profile-run-2.log with message "Could not read file 'Z:\task_1561608513\build\src\artifacts\profile-run-2.log'", reason "file-missing-on-worker" and expiry 2020-06-26T03:37:35.775Z
[taskcluster:error] TASK FAILURE during artifact upload: file-missing-on-worker: Could not read file 'Z:\task_1561608513\build\src\artifacts\profile-run-2.log'
[taskcluster 2019-06-27T04:33:37.977Z] [mounts] Preserving cache: Moving "Z:\task_1561608513\build" to "Z:\caches\J3PRTc6NSiSu49D2D6ll-A"
[taskcluster 2019-06-27T04:33:38.556Z] [mounts] Denying task_1561608513 access to 'Z:\caches\J3PRTc6NSiSu49D2D6ll-A'
[taskcluster 2019-06-27T04:33:52.780Z] Uploading redirect artifact public/logs/live.log to URL https://queue.taskcluster.net/v1/task/FKcSYJTSQuqNfDlw_aGWTg/runs/0/artifacts/public/logs/live_backing.log with mime type "text/plain; charset=utf-8" and expiry 2020-06-26T03:37:35.775Z
[taskcluster:error] exit status 1
[taskcluster:error] file-missing-on-worker: Could not read file 'Z:\task_1561608513\build\src\artifacts\profdata.tar.xz'
[taskcluster:error] file-missing-on-worker: Could not read file 'Z:\task_1561608513\build\src\artifacts\profile-run-2.log'

Flags: needinfo?(matt.woodrow)
Pushed by mwoodrow@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/c633a515314d
Combine the two video RecvOutput methods and switch based on the descriptor type. r=jya
https://hg.mozilla.org/integration/autoland/rev/c9f9bba02acf
Make passing a TextureFactoryIdentifier optional, and pass one whenever we can. r=jya
https://hg.mozilla.org/integration/autoland/rev/5a60cd493115
Use Endpoints for VideoBridge construction, and support the possibility that there are multiple at the same time. r=jya
https://hg.mozilla.org/integration/autoland/rev/a4c9b86885b7
Create a VideoBridge connection from the RDD process to the parent process. r=jya
https://hg.mozilla.org/integration/autoland/rev/ff918c1013b8
Shutdown video bridge for all processes that might be using it. r=jya
https://hg.mozilla.org/integration/autoland/rev/29d310d368ef
Initialize gfxVars in the RDD process. r=jya
Assignee: nobody → matt.woodrow
Flags: needinfo?(matt.woodrow)
Regressions: 1562395
Regressions: 1583149
Regressions: 1597681
You need to log in before you can comment on or make changes to this bug.