CNA-BUG-224: A GraphicsDevice maintainer comment still says only DIRECTX9 drives the device status, although WEBGPU raises device events too
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 3b43bd86; unless a sentence says otherwise, nothing here was built or executed. Nothing on this page was executed unless the Evidence section says so.
The public DeviceLost documentation and two maintainer comments were corrected, but the comment inside getGraphicsDeviceStatusProperty still says only Direct3D 9 calls the device-event callback; WebGPU calls it from its context-loss hooks.
- Identifier
CNA-BUG-224- Category
- Bug
- Subsystem
- Documentation & release tooling
- Status
- Narrowed (partially fixed; describes only what survives)
- Verified against
- CNA
3b43bd86(3b43bd8687ed46523d873f9bec4b32bd8481dcb5) - Severity
- Low (a triage suggestion, not a project priority)
- Evidence basis
- Source-verified: read at TARGET, not executed
- Tests touching this area
- Yes: see Current tests
- Affected contract
- GraphicsDevice::getGraphicsDeviceStatusProperty() maintainer documentation
Expected behaviour
The maintainer comments on the device-status path say which renderers drive it, as the public DeviceLost Doxygen and the deviceStatus_ member comment now do (“DirectX9 and WebGPU report these transitions”).
Actual behaviour at TARGET
The comment inside getGraphicsDeviceStatusProperty in GraphicsDevice.cpp still reads “Every renderer except D3D9 never calls that callback, so this stays Normal for them”. At TARGET RendererDeviceEvent::Lost is raised by DirectX 9 from its real error paths and by WebGPU from its DebugSimulateContextLoss hook (its native OnDeviceLost callback only logs, CNA-GAP-064); WebGPU raises Resetting/Reset from DebugRestoreContext. Because that hook is reachable from any game through the F9 key (CNA-BUG-078), the status of a WebGPU device can leave Normal, which the comment says cannot happen.
Source locations
modules/graphics/src/Xna/GraphicsDevice.cpp— getGraphicsDeviceStatusProperty: the stale comment; createRenderer: the corrected callback commentmodules/graphics/include/Microsoft/Xna/Framework/Graphics/GraphicsDevice.hpp— DeviceLost Doxygen and deviceStatus_ comment (the fixed half)modules/renderers/webgpu/src/WebGPURenderer.cpp— DebugSimulateContextLoss raises Lost; OnDeviceLost only logsmodules/renderers/directx9/src/DirectX9Renderer.cpp— raises Lost, Resetting and Reset around its real device-reset recovery
Evidence
Checked by reading at 3b43bd86; not executed. Behaviour is not affected; one maintainer comment is.
Narrowed at c6dec91f: 66918da04 (2026-10-19) rewrote the public DeviceLost Doxygen in GraphicsDevice.hpp (“DirectX9 and WebGPU can report loss; desktop platforms are not universally exempt”), the deviceStatus_ member comment and the createRenderer callback comment. Two renderer families this entry also named were retired on 2026-10-13 (fe5e25994, def6f7747).
Focused reproduction
No focused reproduction is known. Nothing has been invented here; the evidence above is what exists.
Current tests
The renderers' own recovery examples (for example webgpu_context_recovery_test and directx9_frame_recovery_test) exercise the events; nothing checks comment text.
Regression test
Documentation fix: name DirectX 9 and WebGPU in the getGraphicsDeviceStatusProperty comment.
Blast radius
Maintainers of the device-loss path. Public documentation and behaviour are unaffected.
Workaround
No workaround is known.
Related pages
The same subject is explained at several altitudes. These are the neighbouring pages at each one.
- User guide
- Graphics renderers: verification
- Architecture
- Graphics architecture: device loss
- Internals
- GraphicsDevice internals
- Known issues
- Bug index