CNA-VGAP-044: Wine test routes and the DIRECTX12 Proton route do not prove which Direct3D or Direct2D implementation served a run
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.
CnaTests' Wine emulator skips the DXVK/vkd3d-proton engagement gate, every Wine-runtime Direct2D registration skips it with no d2d1 marker, and the DIRECTX12 Proton route uses a moving Proton build with no log gate; the Direct2D Proton route is pinned and records its runtime identity.
- Identifier
CNA-VGAP-044- Category
- Verification gap
- Subsystem
- Testing & evidence
- 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
- CTest routes for DIRECTX9, DIRECTX11, DIRECTX12 and DIRECT2D in MinGW cross trees
Expected behaviour
A test counted as Direct3D or Direct2D evidence under Wine shows which translation layer rendered it, as the per-renderer engagement gates do for their own examples.
Actual behaviour at TARGET
UnitTests.cmake gives CnaTests a CROSSCOMPILING_EMULATOR that sets CNA_D3D9_SKIP_DXVK_GATE=1, CNA_D3D11_SKIP_DXVK_GATE=1 or CNA_D3D12_SKIP_VKD3D_GATE=1; the property applies to discovery and to every discovered case, including GoogleTest cases that create a device. In the Wine-runtime branch, all four Direct2D registrations in CMakeLists.txt set CNA_D3D11_SKIP_DXVK_GATE=1, and run-wine-direct2d.sh checks no d2d1 marker. run-proton-vkd3d.sh defaults to the local "Proton - Experimental" install, records no Proton identity, greps no log and ends with exec python3 "${PROTON_DIR}/proton" run; the three DIRECTX12_PROTON fixtures in DirectXParityTests.cmake depend on it. By contrast run-proton-direct2d.sh reads direct2d-proton-pin.txt, refuses the moving Experimental runtime unless explicitly allowed, and publishes the Proton directory and version, its distribution version and the bundled DXVK version to stderr and, when CNA_DIRECT2D_PROTON_IDENTITY_FILE is set, to an identity file (D2D-122), so the DIRECTX12 route is the unpinned one and the Direct2D lane already holds the model for fixing it.
Source locations
cmake/UnitTests.cmake— set_target_properties(CnaTests PROPERTIES CROSSCOMPILING_EMULATOR ...) with the gate-skip variablesmodules/renderers/direct2d/examples/CMakeLists.txt— Direct2D registrations with CNA_D3D11_SKIP_DXVK_GATE=1scripts/run-wine-direct2d.sh— Direct2D Wine wrapper (no engagement marker)scripts/run-proton-vkd3d.sh— Proton route: moving runtime, exec of the proton script, no log gatecmake/DirectXParityTests.cmake— DIRECTX12_PROTON fixture registration
Evidence
Checked by reading at 009d40f5; not executed.
Related: CNA-GAP-059 (the emulator exists only for certain default renderers). The in-code comments justify each skip (pure unit tests create no device; d2d1.dll chooses its own device path); the gap is that the evidence cannot distinguish the implementation that ran.
Independent re-verification: Checked by reading at 009d40f5; not executed. Related: CNA-GAP-059 (the emulator exists only for certain default renderers). The in-code comments justify each skip (pure unit tests create no device; d2d1.dll chooses its own device path); the gap is that the evidence cannot distinguish the implementation that ran. The regression test should keep the gate for CnaTests cases that create a device, add a d2d1 marker to the Direct2D Wine wrapper, and give run-proton-vkd3d.sh the pin, identity record and vkd3d-proton log token that the Direct2D Proton wrapper's pin and identity record already model.
Focused reproduction
No focused reproduction is known. Nothing has been invented here; the evidence above is what exists.
Current tests
Renderer example CTests keep their engagement gates; CnaTests cases, Direct2D registrations and the Proton fixtures do not.
Regression test
Keep the gate for CnaTests cases that create a device (or split device-free cases), add a d2d1 engagement marker to the Direct2D wrapper, and record and gate the Proton build identity and a vkd3d-proton log token.
Blast radius
How much Direct3D and Direct2D evidence obtained under Wine or Proton can be trusted; native Windows runs are unaffected.
Workaround
No workaround is known.
Related pages
The same subject is explained at several altitudes. These are the neighbouring pages at each one.