DXGI 1.3 Improvements
The following functionality has been added in Microsoft DirectX Graphics Infrastructure (DXGI) 1.3, which is included starting in Windows 8.1.
Starting in Windows 8.1, DXGI 1.3 adds the capability to flush and release unused memory resources allocated by the DXGI adapter. This allows apps to release temporary memory while suspending, reducing the chance the app will be terminated to free resources for other apps. When the app resumes, device drivers that support trim will recreate resources as they are needed. As of Windows 8.1, all Direct3D devices created by an app must call IDXGIDevice3::Trim when suspending to reduce memory footprint and reduce the chance that the app will be terminated to reclaim system resources.
Starting in Windows 8.1, DXGI 1.3 supports multi-plane overlays. You can find out if the device supports multi-plane overlays in hardware by using IDXGIOutput2::SupportsOverlays.
Starting in Windows 8.1, DXGI 1.3 supports overlapping swap chains. Overlapping swap chains are used to draw 3D graphics at non-native resolutions (with hardware upscaling) while presenting UI at native resolution. This lets games take advantage of higher fill rates for responsive gameplay without degrading the visual quality of UI elements, such as player score and dialog text. On devices that support multi-plane overlays, Direct3D will use multi-plane overlays for overlapping swap chains. Create a foreground swap chain by specifying the DXGI_SWAP_CHAIN_FLAG_FOREGROUND_LAYER flag when creating the swap chain, and use IDXGISwapChain2::SetMatrixTransform and IDXGISwapChain2::GetMatrixTransform to scale the swap chain used for gameplay.
Starting in Windows 8.1, DXGI 1.3 can be used to select a subregion of the backbuffer for use with the swap chain, making it possible to render to a smaller back buffer without recreating the swap chain. See IDXGISwapChain2::SetSourceSize and IDXGISwapChain2::GetSourceSize.
Starting in Windows 8.1, DXGI 1.3 makes it possible to reduce latency by letting the swap chain finish presenting the previous frame before starting to use the device to draw the next frame. See IDXGISwapChain2::GetFrameLatencyWaitableObject, IDXGISwapChain2::GetMaximumFrameLatency, and IDXGISwapChain2::SetMaximumFrameLatency.