Module index
Evidence basis: source-verified at the pinned commit. 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. Counts are computed from the Git tree of the pinned commit.
Generated page. Produced by python3 scripts/generate_dev_reference.py from the Git objects of CNA commit 009d40f5; do not edit it by hand. It is a syntactic inventory: it locates declarations and files, and does not establish behaviour, build success or test results.
Modules
Every directory under modules/ at the snapshot. Counts describe tree shape, not architectural importance: a module with few headers can own a great deal of behaviour, and header counts include Internal/ headers.
Renderer directories under modules/renderers/
A directory that owns a src/ is an implementation family; one family can serve several public identities (EasyGL serves five). common/ holds shared helpers. The identity-to-family map is in the selection axes index.
| Directory | Role | Headers | Sources | Test files | Entry point | Maintainer page |
|---|---|---|---|---|---|---|
canvas | implementation family | 4 | 5 | 1 | CMakeLists.txt | no dedicated internals page |
common | shared helper (no src/ of its own) | 14 | 11 | 6 | no dedicated internals page | |
direct2d | implementation family | 1 | 2 | 1 | CMakeLists.txt | no dedicated internals page |
directx11 | implementation family | 11 | 12 | 1 | CMakeLists.txt | no dedicated internals page |
directx12 | implementation family | 17 | 17 | 2 | CMakeLists.txt | no dedicated internals page |
directx9 | implementation family | 18 | 23 | 1 | CMakeLists.txt | no dedicated internals page |
easygl | implementation family | 3 | 3 | 4 | CMakeLists.txt | Internals page |
fna3d | implementation family | 9 | 8 | 9 | CMakeLists.txt | no dedicated internals page |
freedirect | implementation family | 1 | 2 | 0 | CMakeLists.txt | no dedicated internals page |
gdi | implementation family | 3 | 4 | 0 | CMakeLists.txt | no dedicated internals page |
headless | implementation family | 1 | 2 | 0 | CMakeLists.txt | Internals page |
html-dom | implementation family | 5 | 6 | 1 | CMakeLists.txt | no dedicated internals page |
metal | implementation family | 25 | 2 | 26 | CMakeLists.txt | no dedicated internals page |
opengl4 | implementation family | 6 | 11 | 9 | CMakeLists.txt | Internals page |
portablegl | implementation family | 1 | 3 | 0 | CMakeLists.txt | no dedicated internals page |
sdl-gpu | implementation family | 5 | 6 | 3 | CMakeLists.txt | Internals page |
sdl-renderer | implementation family | 1 | 2 | 0 | CMakeLists.txt | no dedicated internals page |
software | implementation family | 4 | 15 | 2 | CMakeLists.txt | Internals page |
stub | implementation family | 1 | 2 | 0 | CMakeLists.txt | Internals page |
svg-dom | implementation family | 5 | 6 | 1 | CMakeLists.txt | no dedicated internals page |
vulkan | implementation family | 4 | 3 | 1 | CMakeLists.txt | Internals page |
webgpu | implementation family | 8 | 8 | 2 | CMakeLists.txt | no dedicated internals page |
A module without a dedicated internals page has not been given a deep maintainer tour on this site; that says nothing about the module itself.
Deep dives on this topic
Long-form pages that explain the exact semantics, invariants and evidence behind this subject.
- Glossary of XNA and CNA terms — Checked definitions of the XNA and CNA terms used across libcna.com, grouped by subject, each correcting common older readings and linking to the page with the detail.
- The physical module architecture: ownership, targets and composition — How CNA's 22 framework modules and 21 renderer families own their targets, include roots, tests and examples, which target names cannot be guessed, and how to read a source path at snapshot 009d40f5.
Known issues in this area
Current defects, gaps and limitations at this snapshot that touch this subject.
- CNA-BUG-235: docs/physical-modules.md's Sharp Runtime column omits components that four modules link: Uri for phone and media, Collections.Core for input, Resources for content — CNA's module table gives phone Core.Base and Collections.Core, input Core.Base, and media and content Core.Base and IO, while the modules' CMake files link Uri (phone, media), Collections.Core (input) and Resources (cont
Related pages
The same subsystem is explained at four altitudes. These are the neighbouring pages at each one.
- Architecture
- Physical module graph
- Maintainer workflow
- Source ownership · Repository map
- Reference
- Public header index · Selection axes index