Hello blink-dev!
After much churn, the industry has converged on a consistent and very-widely adopted way of handling HDR content, based on the concept of
HDR headroom.
A core feature unique to HDR is that HDR content can be drawn an infinite number of ways, often unrepresentable as a single bitmap (e.g, gainmap images). There exists a general problem wherein a HDR content must be put into pixels in a buffer. At that moment, this infinite number of ways of representing it must be collapsed into a single set of pixel values in a buffer.
This chrome feature is for the 2D
canvas version of the problem, but it may be helpful to peruse the related specifications of
WebGPU texture upload and
WebGL texture upload, since they are the same solution to the same problem (they are shipping as separate Chromium features, because their specs are separate and their development will be done in series).
Also of note is that a canvas can be a source of pixels (not just a destination) and there is
a separate issue (and a separate feature) for dealing with that side of things.
Contact emails
ccam...@chromium.orgExplainer
https://github.com/ccameron-chromium/ColorWeb-CG/blob/master/canvas2d_hdr_headroom.mdSpecification
NoneSummary
Adds a global HDR headroom attribute to CanvasRenderingContext2D. When drawing HDR content (e.g, gain map images), to the canvas' bitmap, this attribute will determine how much tone mapping should be performed (if any).
Blink component
Blink>CanvasSearch tags
HDR tone mapping canvas drawImageTAG review
NoneTAG review status
PendingRisks
Interoperability and Compatibility
None. This is designed to provide an avenue through which interoperability for HDR content can be increased, while maintaining backwards compatibility with existing behavior (because SDR is forever).
Gecko: No signal
WebKit: No signal
Web developers: No signals
Other signals:
WebView application risks
Does this intent deprecate or change behavior of existing APIs, such that it has potentially high risk for Android WebView-based applications?
None
Goals for experimentation
Ongoing technical constraints
None
Debuggability
None
Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, ChromeOS, Android, and Android WebView)?
YesNoFlag name on about://flags
NoneFinch feature name
CanvasGlobalHDRHeadroomRequires code in //chrome?
FalseTracking bug
https://issues.chromium.org/issues/428575083Estimated milestones
No milestones specified
Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5858435803119616