ExternalBeginFrameController was introduced in https://chromium-review.googlesource.com/c/chromium/src/+/558252. It enables issuing BeginFrames from outside the display compositor, e.g. via DevTools.
Right now, it's tightly coupled to ui::Compositor and GpuProcessTransportFactory, but in the future it should become a mojo interface dispensed by frame_sink_manager.mojom.
The proposed interface:
- service interface includes IssueExternalBeginFrame.
- client interface includes OnNeedsExternalBeginFrames, OnDisplayDidFinishFrame.
Proposed way to enable and access it:
mojom::ExternalBeginFrameReceiverRequest receiver_request;
mojom::ExternalBeginFrameClientPtr client;
frame_sink_manager->EnableExternalBeginFrames(std::move(receiver_request), std::move(client));
We should be able to move over ExternalBeginFrame clients to this interface as soon as viz::Display creation moves out of GpuPTF.
Comment 1 by eseckler@chromium.org
, Oct 3 2017