Site icon EfmSoft

What does HRESULT 0x087A0009 (DXGI_STATUS_UNOCCLUDED) mean?

 
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 itemWhy it matters
What to capturelast occluded result, DXGI_PRESENT_TEST cadence, HWND visibility, output attachment and first normal Present result
Current graph stateswap chain, target window, output and Present call
Supporting tracePresent/Present1 result history, WM_SIZE or WM_DISPLAYCHANGE messages, swap-chain description and current IDXGIOutput identity
Object identityswap-chain return to visibility
Rejected conditionDXGI detected that a previously hidden target became visible again

Reproduce one variable at a time

  1. Capture the failing state. Record last occluded result, DXGI_PRESENT_TEST cadence, HWND visibility, output attachment and first normal Present result.
  2. 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


Looking for a different code? Search another status or error code.

Exit mobile version