CNA-PLAT-007: On browsers without mix-blend-mode: plus-lighter, HTML_DOM and SVG_DOM draw BlendState.Additive as ordinary composition without an error
Evidence basis: source-verified at the pinned commit; tests exist (not executed for this page). Claims on this page were checked by reading the CNA source at commit 009d40f5; unless a sentence says otherwise, nothing here was built or executed. Nothing on this page was executed unless the Evidence section says so.
The renderers set mix-blend-mode to plus-lighter for additive sprites; a browser that does not support it ignores the value, and only the memoised AdditiveBlending capability (CSS.supports) reveals the difference.
- Identifier
CNA-PLAT-007- Category
- Platform limitation
- Subsystem
- Graphics & renderers
- Status
- Open
- Verified against
- CNA
009d40f5(009d40f5dd085c4e674d3479675fac84b12b3e0a) - Evidence basis
- Source-verified: read at TARGET, not executed
- Tests touching this area
- Yes: see Current tests
- Affected contract
- SpriteBatch with BlendState::Additive on HTML_DOM and SVG_DOM
Expected behaviour
Additive sprites should add their colour to the destination.
Actual behaviour at TARGET
HtmlDomSpriteBatchRenderer.cpp writes style.mixBlendMode = 'plus-lighter' for additive sprites; HtmlDomRenderer.cpp and SvgDomRenderer.cpp answer the AdditiveBlending capability from a memoised CSS.supports('mix-blend-mode', 'plus-lighter'). Where that is false the style is ignored by the browser and the sprite composites normally.
Source locations
modules/renderers/html-dom/src/HtmlDomSpriteBatchRenderer.cpp— mixBlendMode 'plus-lighter' for additive spritesmodules/renderers/html-dom/src/HtmlDomRenderer.cpp— CNA_HtmlDom_SupportsAdditiveBlendingmodules/renderers/svg-dom/src/SvgDomRenderer.cpp— memoised plus-lighter support query
Evidence
Checked by reading the named sources at 009d40f5; nothing was built or executed for this entry.
Focused reproduction
No focused reproduction is known. Nothing has been invented here; the evidence above is what exists.
Current tests
The HTML_DOM browser run uses a Chromium that supports plus-lighter.
Regression test
A harness case on a browser without plus-lighter asserting the capability is false.
Blast radius
Additive effects on older browsers.
Workaround
Check GraphicsCapability::AdditiveBlending and fall back.
Related pages
The same subject is explained at several altitudes. These are the neighbouring pages at each one.
- Deep dives
- Browser renderers: failure clusters
- Known issues
- Platform limitation index