CNA-GAP-025: DIRECT2D refuses additive blending (SourceAlpha/One and One/One) and other asymmetric or non-Add blend states, and reports AdditiveBlending false

CNA snapshot 009d40f5  ·  Known Issues › Functional gaps  ·  source links pinned to 009d40f5

✓

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.

BlendStateToDirect2DBlendMode throws NotSupportedException for BlendState::Additive and One/One and std::runtime_error for asymmetric or non-Add combinations, because Direct2D's composite modes have no matching operation.

Identifier
CNA-GAP-025
Category
Functional gap
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.Begin(..., BlendState::Additive or custom BlendState, ...) on DIRECT2D

Expected behaviour

XNA SpriteBatch supports BlendState.Additive and arbitrary blend states; particle and glow effects commonly use additive blending.

Actual behaviour at TARGET

Direct2DRenderer.cpp's BlendStateToDirect2DBlendMode throws NotSupportedException ("Direct2D rejects additive SourceAlpha/One and One/One blend states: its PLUS ...") and std::runtime_error for asymmetric or non-Add states; SupportsDirect2DCapability answers false for AdditiveBlending.

Source locations

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

Direct2D's device-free blend tests pin the refusals.

Regression test

None beyond the existing refusal tests unless additive support is added.

Blast radius

2D games with additive particles or glows on DIRECT2D; the exception type differs between the additive and the other refused states.

Workaround

Check GraphicsCapability::AdditiveBlending and fall back to AlphaBlend or pre-blended sprites.

The same subject is explained at several altitudes. These are the neighbouring pages at each one.