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
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
modules/renderers/direct2d/examples/CMakeLists.txt— Wine/Proton parity environment skipsmodules/renderers/direct2d/src/Direct2DRenderer.cpp— SupportsColorMatrixEffect and the D2D-85 NotSupportedException
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.
Related pages
The same subject is explained at several altitudes. These are the neighbouring pages at each one.
- Deep dives
- Windows 2D renderers: Direct2D tests
- Known issues
- Platform limitation index