Functional gaps
Evidence basis: source-verified at the pinned commit. Claims on this page were checked by reading the CNA source at commit 3b43bd86; unless a sentence says otherwise, nothing here was built or executed.
Functionality is intentionally or currently incomplete or unsupported; nothing violates a contract, the contract is narrower than one might expect. Every entry below exists at CNA 3b43bd86; open an entry for its expected and actual behaviour, source locations, evidence and blast radius.
47 entries
| ID | Title | Subsystem | Status | Severity | Evidence basis |
|---|---|---|---|---|---|
CNA-GAP-002 | CNA::Logger serialises writes but not level changes, and a sink must not call back into the logger | Core & runtime | open | n/a | source-verified |
CNA-GAP-004 | Game::ShowMissingRequirementMessage is a virtual hook that nothing in CNA calls | Core & runtime | open | n/a | source-verified |
CNA-GAP-005 | DrawableGameComponent loads content once in Initialize and never follows the graphics device service | Core & runtime | open | n/a | source-verified |
CNA-GAP-006 | GraphicsDeviceManager never calls its FindBestDevice, RankDevices or CanResetDevice virtuals | Core & runtime | open | n/a | source-verified |
CNA-GAP-007 | CNA public headers still export Sharp Runtime's unprefixed CONTAINS and INTERNAL macros through SharpRuntimeHelper.hpp | Core & runtime | narrowed | n/a | source-verified |
CNA-GAP-009 | Sub-pixel SpriteBatch destinations reach only EasyGL and SOFTWARE; every other renderer truncates them to whole pixels | Graphics & renderers | open | n/a | source-verified |
CNA-GAP-011 | PresentationParameters.RenderTargetUsage is stored, cloned and exposed but never consulted by GraphicsDevice | Graphics & renderers | open | n/a | source-verified |
CNA-GAP-015 | Only BasicEffect exposes XNA's parameter graph and technique name; the other stock effects still lack texture or light parameters and carry a Default technique | Graphics & renderers | narrowed | n/a | source-verified |
CNA-GAP-016 | Several live GraphicsDevices share process-wide window and input slots with last-writer semantics | Graphics & renderers | open | n/a | source-verified |
CNA-GAP-018 | EasyGL does not register Texture3D with its context-loss recovery, so volume texture contents are lost after a real WebGL/GLES context loss | Graphics & renderers | open | n/a | source-verified |
CNA-GAP-020 | SDL_GPU accepts ShaderEffect GLSL only in Vulkan-rule form (#version 450, explicit locations and SDL_gpu sets), so the shared GLSL ES 3.00 .cnj effect fixture does not load there | Graphics & renderers | open | n/a | recorded by CNA |
CNA-GAP-022 | DIRECTX9 ignores the MSAA request for RenderTargetCube | Graphics & renderers | narrowed | n/a | source-verified |
CNA-GAP-032 | PbrEffect takes one punctual light per draw | Graphics & renderers | narrowed | n/a | source-verified |
CNA-GAP-034 | The XNB DateTime reader discards the two DateTimeKind bits, so Utc and Local values load as plain tick counts | Content & XNB/CNB/CNJ | open | n/a | source-verified |
CNA-GAP-035 | Models built to .xnb carry no cameras, because an XNA Model has no camera storage | Models & glTF | narrowed | n/a | source-verified |
CNA-GAP-036 | Runtime glTF import has no unit-scale option; only the offline converters can rescale a model | Models & glTF | open | n/a | source-verified |
CNA-GAP-037 | EXT_mesh_gpu_instancing is not imported: each node keeps one placement and its per-instance transforms are dropped | Models & glTF | open | n/a | source-verified |
CNA-GAP-038 | Mirrored glTF placements keep the shared winding, so under the default cull mode they render back-facing | Models & glTF | open | n/a | source-verified |
CNA-GAP-039 | The glTF vertex ABI carries two UV channels, one joint-influence set and one colour set; further sets are dropped and reported | Models & glTF | open | n/a | source-verified |
CNA-GAP-040 | A skinned glTF model cannot also carry rigid scene-node animation: tracks not driven by its skins are dropped | Models & glTF | open | n/a | source-verified |
CNA-GAP-041 | A glTF mesh placed by several nodes takes its morph-weight animation from the first of them only | Models & glTF | open | n/a | source-verified |
CNA-GAP-042 | CUBICSPLINE bone and node channels are replayed linearly between samples taken at least every 1/60 s, an approximation of the authored curve | Models & glTF | narrowed | n/a | source-verified |
CNA-GAP-043 | glTF skins with more than 72 joints are refused at import | Models & glTF | open | n/a | source-verified |
CNA-GAP-044 | glTF punctual lights are approximated as at most three directional lights; point and spot lights have no native support | Models & glTF | open | n/a | source-verified |
CNA-GAP-045 | XACT features FAudio never finished are unimplemented: QUEUE and REPLACE_QUIETEST limits, band-pass track filters, reverb sends and DSP-preset RPCs | Audio & media | open | n/a | source-verified |
CNA-GAP-046 | CNA has no sound-instance limit: InstancePlayLimitException is declared but never thrown | Audio & media | open | n/a | source-verified |
CNA-GAP-047 | XACT wave-bank entries compressed as XMA/XMA2 or WMA produce no sound | Audio & media | open | n/a | source-verified |
CNA-GAP-049 | StorageDevice::DeviceChanged is declared but never raised | Storage | open | n/a | source-verified |
CNA-GAP-053 | QualityOfService of PlayerMatch and Ranked search results is never measured | Networking & gamer services | narrowed | n/a | source-verified |
CNA-GAP-054 | The terminal window title is stored but never emitted, so SetTitle has no visible effect | Platforms | open | n/a | source-verified |
CNA-GAP-055 | TerminalSession does not restore or re-establish the terminal on job-control stop and continue (SIGTSTP/SIGCONT) | Platforms | open | n/a | source-verified |
CNA-GAP-057 | CNA::Devices host dialogs are minimal: message boxes are unparented, tray icons have no image API, and UrlLauncher passes any string to the OS | Platforms | narrowed | n/a | source-verified |
CNA-GAP-059 | In a MinGW-w64 cross tree CnaTests gets a Wine CROSSCOMPILING_EMULATOR only when the default renderer is DIRECTX9 | Build & CI | open | n/a | source-verified |
CNA-GAP-060 | No renderer or subsystem registers an IDiagnosticsSource, and nothing registers ResourceKind::AudioVoice resources | Diagnostics & Inspector | open | n/a | source-verified |
CNA-GAP-061 | No renderer implements IResourcePreviewProvider, and the seam cannot cancel a preview ticket the agent abandons | Diagnostics & Inspector | open | n/a | source-verified |
CNA-GAP-062 | The C ABI has no route for 633 public C++ declarations that the coverage inventory records as planned | C API & bindings | open | n/a | source-verified |
CNA-GAP-063 | A fixed-step TargetElapsedTime above 500 ms never produces an Update from Game::Tick, essentially the same ceiling XNA 4.0 has | Core & runtime | open | n/a | source-verified |
CNA-GAP-064 | WEBGPU does not propagate a real device loss: OnDeviceLost only logs, so DeviceLost, the device status and the draw gate react only to the debug hooks | Graphics & renderers | open | n/a | source-verified |
CNA-GAP-065 | The renderer capability profile has no feature for pre-compiled SPIR-V payloads, so SDL_GPU reports every source-dialect feature Unsupported | Graphics & renderers | open | n/a | source-verified |
CNA-GAP-066 | A runtime .cnj Texture2D colorKey leaves keyed texels as straight-alpha (key RGB, alpha 0), so they are invisible only under a non-premultiplied blend state | Content & XNB/CNB/CNJ | open | n/a | source-verified |
CNA-GAP-067 | ScrollWheelValue drops sub-notch wheel motion: the SDL3 platform counts whole notches only, where XNA accumulates raw wheel units | Input | open | n/a | source-verified |
CNA-GAP-068 | Video playback is unavailable on Windows, MinGW, Emscripten, Android and iOS: CNA has no FFmpeg integration for those targets yet | Audio & media | open | n/a | source-verified |
CNA-GAP-070 | NetworkSession's Local, LocalWithLeaderboards and SystemLink Begin/End pairs are synchronous: Begin runs the callback and returns a completed result, and End does the work on the caller's thread | Networking & gamer services | open | n/a | source-verified |
CNA-GAP-071 | Only EasyGL leases its context to other threads: on every other renderer, graphics resources created on a loading thread have no CNA-level exclusion against the frame | Graphics & renderers | narrowed | n/a | source-verified |
CNA-GAP-074 | Guests cannot take part in PlayerMatch or Ranked sessions | Networking & gamer services | open | n/a | source-verified |
CNA-GAP-075 | Compiled XNA effects whose pixel shaders use BEM, TEXDEPTH, TEXDP3, TEXDP3TEX, TEXM3X2DEPTH or TEXREG2AR/GB/RGB cannot run on SDL_GPU, WEBGPU or FNA3D's SDL_GPU driver | Graphics & renderers | open | n/a | source-verified |
CNA-GAP-076 | WEBGPU and DIRECTX9 refuse a RenderTargetCube face in a multiple-render-target set, although both report MultipleRenderTargets | Graphics & renderers | open | n/a | source-verified |