CNA-VGAP-021: No SpriteFont/DrawString pixel test exists for DIRECTX9 or FNA3D
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 c1c316b9; unless a sentence says otherwise, nothing here was built or executed. Nothing on this page was executed unless the Evidence section says so.
SpriteFont/DrawString reach pixels in registered tests on EasyGL, SOFTWARE, SDL_RENDERER, VULKAN, SDL_GPU, WEBGPU, DIRECTX11 and METAL (the shared sprite_font parity fixture, the DirectX SpriteFont fixtures and the EasyGL SpriteFont oracles); DIRECTX9 and FNA3D have none.
- Identifier
CNA-VGAP-021- Category
- Verification gap
- Subsystem
- Testing & evidence
- Status
- Narrowed (partially fixed; describes only what survives)
- Verified against
- CNA
c1c316b9(c1c316b9c7a846ce8002809c151fcd1af14942c9) - Evidence basis
- Source-verified: read at TARGET, not executed
- Tests touching this area
- Yes: see Current tests
- Affected contract
- SpriteBatch::DrawString / SpriteFont rendering per renderer
Expected behaviour
Text rendering combines shared layout with each renderer's sprite path (filtering, premultiplication, sub-pixel handling), so each family needs at least one pixel check.
Actual behaviour at TARGET
A count of SpriteFont/DrawString registrations in each renderer's examples/CMakeLists.txt and in the shared corpora finds them for EasyGL, SOFTWARE, SDL_RENDERER and VULKAN, plus the DIRECTX11 fixtures in DirectXParityTests.cmake, and for METAL, which since AM4-150 runs the EasyGL SpriteFont oracles (single glyph, multi-glyph spacing, newline, default character, flip and rotation/scale) as Metal_EasyGLOracle_* from the Metal examples. The shared parity fixture sprite_font (WEBGPU-179: a SpriteFont string, a newline and a default-character substitution reach pixels) in ParityFixtures.cmake is registered by cna_register_parity_fixtures for SDL_GPU (SdlGpu_Parity_sprite_font), WEBGPU (WebGPU_Parity_sprite_font), EasyGL and DIRECTX11. None is registered for DIRECTX9 or FNA3D; HEADLESS and STUB rasterise nothing.
Source locations
cmake/DirectXParityTests.cmake— SpriteFont_* parity fixtures for DIRECTX11modules/graphics/examples/parity/ParityFixtures.cmake— sprite_font in the shared parity listmodules/renderers/metal/examples/CMakeLists.txt— CNA_METAL_EASYGL_ORACLES: the spritefont_* oracles run on METAL
Evidence
Checked by reading the named sources at c1c316b9; nothing was built or executed for this entry. Coverage established by grepping registrations; tests were not run.
Independent re-verification: Checked by reading the named sources at c1c316b9; nothing was built or executed for this entry. The first count missed the shared parity_sprite_font fixture. Coverage was established by grepping registrations, the shared parity inventory and each renderer's example directory; tests were not run. SdlGpu_Parity_sprite_font is not among the failing classic SDL_GPU tests in CNA's latest record (PSG-0009, STREETS-0008). The blast radius is text output on the renderers still listed.
Narrowed at c1c316b9: 4d1eb1e59 (AM4-150) registered the renderer-neutral EasyGL oracle corpus on METAL, including its six SpriteFont pixel oracles; read at c1c316b9, not executed. DIRECTX9 and FNA3D still register no text pixel test.
Focused reproduction
No focused reproduction is known. Nothing has been invented here; the evidence above is what exists.
Current tests
Renderer-independent SpriteFont layout tests exist in the graphics module; they do not rasterise.
Regression test
Register the existing EasyGL SpriteFont fixtures (single glyph, multi-glyph spacing) for each missing family that supports textures.
Blast radius
Text output on the listed renderers: glyph placement, filtering and colour are unproven there.
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
- SpriteFont text layout: evidence
- Known issues
- Verification gap index