| Previous | Next |
| DXGI_STATUS_MODE_CHANGE_IN_PROGRESS | DXGI_STATUS_DDA_WAS_STILL_DRAWING |
DXGI_STATUS_UNOCCLUDED
Interpret the result in its owning layer: status unoccluded
Windows reports DXGI_STATUS_UNOCCLUDED (0x087A0009) at the dxgi status checkpoint. Here, DXGI detected that a previously hidden target became visible again. That narrows the first investigation to swap-chain return to visibility instead of the entire GPU stack.
A DXGI status can describe a successful or temporarily invisible presentation. Converting every non-S_OK value into device recreation destroys useful state and can create a full-screen transition loop.
Capture before recreating objects
| Capture item | Why it matters |
|---|---|
| What to capture | last occluded result, DXGI_PRESENT_TEST cadence, HWND visibility, output attachment and first normal Present result |
| Current graph state | swap chain, target window, output and Present call |
| Supporting trace | Present/Present1 result history, WM_SIZE or WM_DISPLAYCHANGE messages, swap-chain description and current IDXGIOutput identity |
| Object identity | swap-chain return to visibility |
| Rejected condition | DXGI detected that a previously hidden target became visible again |
Reproduce one variable at a time
- Capture the failing state. Record last occluded result, DXGI_PRESENT_TEST cadence, HWND visibility, output attachment and first normal Present result.
- Fully cover the window, enter the idle loop, then uncover it and observe the unoccluded notification.
The comparison with DXGI_STATUS_OCCLUDED is especially useful: DXGI_STATUS_OCCLUDED is the earlier state that should have caused rendering to pause.
Recovery contract
Leave the idle path and resume rendering without recreating the device merely because visibility changed.
- debug-layer, ETW or driver diagnostics no longer report the rejected swap-chain return to visibility contract during the same scenario.
Implementation notes
A production fallback should be explicit: pause rendering, re-enumerate, rebuild one cache entry, recreate a device, or decline a protected path only when this layer calls for that action. Reinstalling every display component, deleting all caches or forcing a resolution change is not an evidence-based fix for this condition.
Technical references
- Microsoft: DXGI status codes — background for the swap-chain return to visibility.
- Microsoft: DXGI overview and presentation
- Microsoft: DXGI_PRESENT flags
- Microsoft: DXGI best practices
Looking for a different code? Search another status or error code.