CNA-VGAP-024: METAL's CI lane proves construction, clear/present and capability reporting but no representative 3D pixels
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.
metal-macos-ci.yml runs only ctest -R '^Metal' (Metal_Smoke, Metal_Capabilities, Metal_PortableHelpers) and the compile-definition tests; no textured, lit or depth-tested 3D output is checked on macOS.
- Identifier
CNA-VGAP-024- 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
- The METAL renderer's 3D pipeline (stock effects, depth, textures) on macOS
Expected behaviour
A renderer's 3D path needs at least a pixel check of representative draws on its real platform.
Actual behaviour at TARGET
metal-macos-ci.yml builds a Metal tree on macos-14 and runs ctest -R '^Metal' plus GraphicsRendererCompileDefinitionsTest.*. CMakeLists.txt registers only Metal_PortableHelpers, Metal_Smoke and Metal_Capabilities; Metal_Smoke uploads buffers, clears and presents but issues no draw and reads nothing back, and Metal_PortableHelpers runs host-portable policy tests. The lane once ran six draw-and-readback pixel tests (Metal_PbrEffect_Golden, Metal_SkinnedPbrEffect_Golden, Metal_DrawUserPrimitives_VPC, Metal_SpriteBatch_CustomEffect, Metal_MultipleRenderTargets, Metal_Backbuffer_MSAA). CNA's record of GitHub Actions run 29814126178 says all six read back only the clear colour, and CNA responded by making ReadBackbuffer throw NotSupportedException and no longer registering the dependent tests (metal-renderer.md, METAL-258). None of them is registered at TARGET (the source of one, metal_spritebatch_customeffect_test.cpp, is still in the tree unregistered, CNA-VGAP-050), and the adapted renderer has no recorded macOS run.
Source locations
.github/workflows/metal-macos-ci.yml— ctest -R '^Metal' stepmodules/renderers/metal/examples/CMakeLists.txt— the three Metal registrations
Evidence
Checked by reading the named sources at 009d40f5; nothing was built or executed for this entry.
Independent re-verification: Checked by reading the named sources at 009d40f5; nothing was built or executed for this entry. The history of the six removed tests is CNA's own record in metal-renderer.md; the workflow logs are not in the tree. A future pixel gate has to read a RenderTarget2D or wait for backbuffer readback to be re-enabled, so the shared backbuffer-reading fixtures cannot simply be registered. The refusal itself is CNA-GAP-013.
Focused reproduction
No focused reproduction is known. Nothing has been invented here; the evidence above is what exists.
Current tests
As above; the Metal policy unit tests (MetalPolicyTests.cpp) are host-portable logic checks.
Regression test
Register the shared stock-effect and depth pixel fixtures for METAL and run them in the macOS lane.
Blast radius
Every 3D draw on METAL.
Workaround
No workaround is known.
Related pages
The same subject is explained at several altitudes. These are the neighbouring pages at each one.
- Deep dives
- Native GPU evidence tiers
- Known issues
- Verification gap index