CNA-VGAP-021: No SpriteFont/DrawString pixel test exists for DIRECTX9 or FNA3D

CNA snapshot c1c316b9  ·  Known Issues › Verification gaps  ·  source links pinned to c1c316b9

✓

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

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.

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