CNA-PLAT-006: Under Wine or Proton, Direct2D lacks the ColorMatrix effect and ignores bounded-copy and Porter-Duff composite modes, so tinted or NonPremultiplied RenderTarget2D sprite sources throw there

CNA snapshot 009d40f5  ·  Known Issues › Platform limitations  ·  source links pinned to 009d40f5

✓

Evidence basis: source-verified at the pinned commit; recorded by CNA's own run (not repeated here); 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 Direct2D parity test skips its render-target decoration and advanced-blend matrices on those runtimes, and a tinted or NonPremultiplied RenderTarget2D sprite source throws NotSupportedException there (D2D-85).

Identifier
CNA-PLAT-006
Category
Platform limitation
Subsystem
Graphics & renderers
Status
Open
Verified against
CNA 009d40f5 (009d40f5dd085c4e674d3479675fac84b12b3e0a)
Evidence basis
Recorded by CNA: CNA's own recorded run, not repeated here
Tests touching this area
Yes: see Current tests
Affected contract
SpriteBatch drawing a RenderTarget2D with a tint or NonPremultiplied blend on DIRECT2D under Wine/Proton

Expected behaviour

On native Windows, Direct2D provides the ColorMatrix and Premultiply effects the renderer uses for these draws.

Actual behaviour at TARGET

CMakeLists.txt sets CNA_DIRECT2D_SKIP_RENDER_TARGET_DECORATION=1 and CNA_DIRECT2D_SKIP_ADVANCED_BLEND=1 for the WINE and PROTON runtimes, with the comment that WineD3D and Proton's Direct2D do not register ColorMatrix and ignore those composite modes. Direct2DRenderer.cpp probes SupportsColorMatrixEffect() and, for a RenderTarget2D source that needs a tint or NonPremultiplied conversion, throws NotSupportedException (D2D-85) instead of using a CPU fallback.

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

The parity matrices that need these effects are skipped on Wine/Proton and run only on real Windows (a manual lane).

Regression test

None for the limitation itself; native Windows runs of the skipped matrices (see CNA-VGAP-026).

Blast radius

DIRECT2D games run under Wine or Proton (including Linux handhelds) that tint render-target sprites.

Workaround

Tint in a shader-free way (pre-tinted targets) or use another renderer under Wine.

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