Contact emails
mca...@chromium.org,
fs...@chromium.org,
tbuc...@chromium.org (use cases)
Spechttps://github.com/whatwg/html/issues/4087, see also [0]
SummaryThis feature provides a low latency rendering mode for canvas 2D and WebGL contexts -- this is a "continuation" of the experiment called "Intent to Implement and Experiment: Single buffered canvas" sent on Oct 2017 by junov@ [1]. The said experiment lapsed without any follow up e-mails, but since it applied to OffscreenCanvas, we could conclude that the results were positive although no effort to ship to stable happened.
Now for the real summary :-)
Just like the previous ITE, this is useful, for example, for stylus input. Low Latency mode is enabled with canvas.getContext('2d' -or- 'webgl', {lowLatency: true});
Motivation: NaCl/PPAPI provides native OpenGL rendering surfaces which are currently used to implement low latency interfaces; similarly, Android apps on ChromeOS have a low latency path. The deprecation of NaCl and the levelling of the playing field creates a need for this API.
Goals for experimentationValidate the impact of this feature on user experience with production web sites in order to justify moving forward with standardization.
Experiment with different tradeoffs of tearing versus low latency, i.e. using a single blit per requestAnimationFrame() is good for tearing but bad for latency.
Experimental timeline
Start: M71
End: M73
Any risks when the experiment finishes? If the experiment ends without the feature being shipped, web apps that were using it will not suffer any loss of functionality, they will just lose the advantage of single buffered mode. Request for for the feature will be silently ignored (it is a parameter in a dictionary).
Ongoing technical constraints
To offer truly single buffered operation, hardware overlay buffers must be available. Otherwise the implementation will make a best effort to reduce latency (e.g. by skipping the "Renderer" compositor path), but rendering will not be truly single buffered due to the need to go through a compositing pass upstream of device scanout.
Debuggability
No DevTools support needed.
Will this feature be supported on all five Blink platforms supported by Origin Trials (Windows, Mac, Linux, Chrome OS, and Android)?
Yes, but with nuances: hardware overlays are only fully supported on Chrome OS and under certain circumstances (e.g. rotations etc, see [0] again).
Other platforms would benefit from the low latency path, but might react badly to the app trying to render to the front buffer. (This experiment will identify those, e.g. Mac).
Link to entry on the feature dashboard