CNA-GAP-024: DIRECTX11 never uses DXGI exclusive full screen: SetFullscreenState is not called and exclusiveFullscreen_ is dead state

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

✓

Evidence basis: source-verified at the pinned commit. 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.

The renderer never calls IDXGISwapChain::SetFullscreenState, and exclusiveFullscreen_ is declared and read (it disables tearing) but never set. Full screen is applied by the platform window instead, so the swap chain always stays a windowed flip-model chain.

Identifier
CNA-GAP-024
Category
Functional gap
Subsystem
Graphics & renderers
Status
Open
Verified against
CNA c1c316b9 (c1c316b9c7a846ce8002809c151fcd1af14942c9)
Evidence basis
Source-verified: read at TARGET, not executed
Tests touching this area
None
Affected contract
GraphicsDeviceManager.IsFullScreen / ToggleFullScreen on DIRECTX11

Expected behaviour

XNA on Windows used exclusive full screen; DXGI exposes swap-chain-owned exclusive mode through SetFullscreenState.

Actual behaviour at TARGET

A grep of the whole tree finds no SetFullscreenState. exclusiveFullscreen_ stays false in DirectX11Renderer and is read only in the Present tearing condition, and its UpdatePresentationFormatEXT override discards isFullScreen because full screen has its own path. That path is GraphicsDevice::applyPresentationParametersToWindow (and GameWindow::EndScreenDeviceChange), which ask the platform window for WindowFullscreenMode::ExclusiveFullscreen: the SDL3 window selects the closest real display mode to the back-buffer size. So full screen is not a plain borderless window; what is missing is DXGI-level exclusive ownership, and the renderer never sees the platform's exclusive state.

Source locations

Evidence

Checked by reading the named sources at c1c316b9; nothing was built or executed for this entry. Borderless flip-model presentation is the modern default and usually preferable; the gap matters for display-mode changes.

Independent re-verification: Checked by reading the named sources at c1c316b9; nothing was built or executed for this entry. Platform-level exclusive-mode tests exist (Sdl3WindowTests) but none exercises a Direct3D swap chain in full screen. The residual gap is the unset swap-chain policy state and the absence of DXGI exclusive ownership, not the absence of a display-mode switch.

Focused reproduction

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

Current tests

No test requests exclusive mode.

Regression test

If exclusive mode is added: a native Windows test that enters and leaves it and checks the display mode.

Blast radius

Games that expect a display-mode change (resolution/refresh switch) when going full screen.

Workaround

No workaround is known.

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