| Previous | Next |
| DXGI_STATUS_DDA_WAS_STILL_DRAWING | MSG_CI_MASTER_MERGE_STARTED |
DXGI_STATUS_PRESENT_REQUIRED
Interpret the result in its owning layer: status present required
The useful interpretation of DXGI_STATUS_PRESENT_REQUIRED (0x087A002F) starts at the dxgi status boundary: the operation succeeded but DXGI requires another Present at the next vertical synchronization even when application content did not change. In practical terms, inspect next-v-sync presentation contract before changing application-wide graphics settings.
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 |
|---|---|
| Supporting trace | Present/Present1 result history, WM_SIZE or WM_DISPLAYCHANGE messages, swap-chain description and current IDXGIOutput identity |
| Object identity | next-v-sync presentation contract |
| Rejected condition | the operation succeeded but DXGI requires another Present at the next vertical synchronization even when application content did not change |
| What to capture | swap-chain type, Present flags, v-sync interval, dirty-rectangle usage and the first status following the successful call |
| Current graph state | swap chain, target window, output and Present call |
Reproduce one variable at a time
- Capture the failing state. Record swap-chain type, Present flags, v-sync interval, dirty-rectangle usage and the first status following the successful call.
- Honor the requested next-v-sync Present and compare display behavior with a run that intentionally omits it.
The comparison with S_OK is especially useful: S_OK does not carry the additional obligation to present again.
Recovery contract
Schedule the required follow-up present while retaining the current device and resources.
- debug-layer, ETW or driver diagnostics no longer report the rejected next-v-sync presentation 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 next-v-sync presentation contract.
- Microsoft: DXGI overview and presentation
- Microsoft: DXGI_PRESENT flags
- Microsoft: DXGI best practices
Looking for a different code? Search another status or error code.