Use DXGI flip model swap chain for D3D11.
Direct3D 11 supports two presentation modes: Windows 7-style BitBlt and the modern flip models. The BitBlt model has historically been the only way to present the Direct3D swap chain to the screen. Every time a frame needs to be displayed, it makes a copy of the swap chain surface and blits it to the screen buffer. Windows 8.1 introduced the DXGI flip model, enabling the Desktop Window Manager to use the swap chain surface directly.
DXGI flip model swap chain ensures the best performance. When running in windowed mode, it increases the performance by eliminating the expensive and redundant surface blit to the screen buffer. When running in windowed (borderless) full-screen mode, it displays the application swap chain directly on the screen, which reduces input latency by one frame and eliminates desktop composition done by the Desktop Window Manager in the same way that exclusive full-screen does. This optimization is known as "Independent Flip."
To take advantage of the DXGI flip model with Direct3D 11, you need to run the player on Windows 8.1 or higher and not use FullScreenMode.ExclusiveFullScreen. If either of these conditions is unmet, Unity will fall back to using Windows 7-style BitBlt swap chain model automatically, even if this setting is enabled. Unity uses the BitBlt model when using exclusive full-screen mode as flip model swap chains don't support frame latency waitable objects when running in exclusive full-screen mode, which makes them have increased input latency.
DXGI flip model swap chains don't support transparency when using the DwmExtendFrameIntoClientArea function, so if you need to make parts of your window transparent or invisible, you will have to disable this setting and use BitBlt model swap chain.
Unity defaults to using the DXGI flip model for the Direct3D 11 graphics API. Unity always uses the DXGI flip model when using Direct3D 12, so this setting solely affects Direct3D 11. It's best practice to keep this setting enabled.
Flip model swap chain can be forced in the built player by passing it the "-force-d3d11-flip-model" command-line argument. Likewise, the BitBlt model swap chain can be forced by passing the "-force-d3d11-bitblt-model" command-line argument.
See https://docs.microsoft.com/en-us/windows/win32/direct3ddxgi/dxgi-flip-model and https://docs.microsoft.com/en-us/windows/win32/direct3ddxgi/for-best-performance--use-dxgi-flip-model for more information.
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.