CNA-VGAP-030: Model drawing on VULKAN, SOFTWARE and the Direct3D renderers is checked in CI only at the stride draw boundary; the shared Model programs and the whole-corpus L7 rung run in CI for OPENGLES3 only

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

✓

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.

The EasyGL Model draw, hierarchy, two-mesh, skinned-playback and .cnj reader programs are reused verbatim as CTests on SOFTWARE, VULKAN, SDL_GPU, OPENGL4 and the DirectX parity set, but no workflow runs those registrations; the whole-corpus L7 image campaigns for VULKAN, SOFTWARE and DIRECTX11 are committed reports from one earlier commit, not CI jobs.

Identifier
CNA-VGAP-030
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
ModelMesh::Draw / Model::Draw on each 3D renderer; the glTF L7 image comparison

Expected behaviour

A renderer that draws Model graphs should have repeatable evidence that it does so correctly, ideally in CI.

Actual behaviour at TARGET

The easygl_model_* sources are compiled unchanged by CMakeLists.txt (Software_ModelDraw_RedQuad and Software_Model_*), CMakeLists.txt (Vulkan_Model_*), CMakeLists.txt (SdlGpu_EasyGLOracle_model_*), EasyGLParityCorpus.cmake and DirectXParityTests.cmake; HEADLESS has a Model::Draw check in headless_effects_test.cpp and SDL_RENDERER has the refusal test sdlrenderer_model_draw_throws_test.cpp. No workflow runs any of these non-EasyGL registrations: platform-ci.yml builds SOFTWARE and VULKAN with examples but filters ctest to platform tests, and gltf-renderer-stride-ci.yml builds CnaTests only. What CI does run on VULKAN, SOFTWARE and OPENGLES3 is RendererStrideConformance (a real Model::Draw plus Present per glTF stride that passes on no throw or a named refusal, with no pixel check) and the L0-L6 ladder; the l7-corpus job runs the whole-corpus image rung for OPENGLES3 only. The VULKAN, SOFTWARE and DIRECTX11 (under DXVK) whole-corpus results are the committed reports gltf-l7-vulkan-corpus-report.json, gltf-l7-software-corpus-report.json and gltf-l7-directx11-report.json, captured on 2026-08-18 at CNA commit b6c180fd.

Source locations

Evidence

Checked by listing the renderer example directories, reading the workflow and the report headers at 009d40f5; not executed. The reports are CNA's own records for their commit, not for 009d40f5.

Independent re-verification: Checked by reading each renderer's CMake registrations of the shared Model programs, every workflow's ctest selection and the report headers at 009d40f5; not executed. The reports are CNA's own records for their commit, not for 009d40f5. The regression test should be a CI job that runs the Vulkan_Model_* and Software_Model_* CTests and reruns the VULKAN (lavapipe) and SOFTWARE L7 rungs against their committed goldens.

Focused reproduction

No focused reproduction is known. Nothing has been invented here; the evidence above is what exists.

Current tests

L0–L6 oracles and the stride test run per renderer in CI; the EasyGL Model programs run where EasyGL is built.

Regression test

A CI job that reruns the VULKAN (lavapipe) and SOFTWARE L7 rungs against their committed goldens; a small renderer-local Model hierarchy program shared by the 3D renderers.

Blast radius

Evidence only: regressions in Model drawing on VULKAN, SOFTWARE and the Direct3D renderers would not be caught by CI image comparison.

Workaround

No workaround is known.

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