diff options
author | msoxzw <56633971+msoxzw@users.noreply.github.com> | 2023-01-30 23:20:51 +0000 |
---|---|---|
committer | Dudemanguy <random342@airmail.cc> | 2023-02-28 14:41:33 +0000 |
commit | 8006ff6cf6af462944cfbb9d4d816e40961a5de1 (patch) | |
tree | e130f5a58fee29b5b86c8fbe5624d116eaff30be /video/out | |
parent | 3e351a41e24522f5a2d979809e84106cbfbbb480 (diff) | |
download | mpv-8006ff6cf6af462944cfbb9d4d816e40961a5de1.tar.bz2 mpv-8006ff6cf6af462944cfbb9d4d816e40961a5de1.tar.xz |
vo_gpu: d3d11_helpers: prefer DXGI_SWAP_EFFECT_FLIP_DISCARD if possible
Similar to libplacebo[1], DXGI_SWAP_EFFECT_FLIP_DISCARD is used instead
of DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL starting with Windows 10.
[1]: https://github.com/haasn/libplacebo/blob/master/src/d3d11/swapchain.c
Diffstat (limited to 'video/out')
-rw-r--r-- | video/out/gpu/d3d11_helpers.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/video/out/gpu/d3d11_helpers.c b/video/out/gpu/d3d11_helpers.c index 8aee0f69ba..54eaea94aa 100644 --- a/video/out/gpu/d3d11_helpers.c +++ b/video/out/gpu/d3d11_helpers.c @@ -640,7 +640,11 @@ static HRESULT create_swapchain_1_2(ID3D11Device *dev, IDXGIFactory2 *factory, desc.BufferUsage &= ~DXGI_USAGE_UNORDERED_ACCESS; } - desc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL; + if (IsWindows10OrGreater()) { + desc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD; + } else { + desc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL; + } desc.BufferCount = opts->length; } else { desc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD; @@ -931,7 +935,9 @@ bool mp_d3d11_create_swapchain(ID3D11Device *dev, struct mp_log *log, DXGI_SWAP_CHAIN_DESC scd = {0}; IDXGISwapChain_GetDesc(swapchain, &scd); - if (scd.SwapEffect == DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL) { + if (scd.SwapEffect == DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL || + scd.SwapEffect == DXGI_SWAP_EFFECT_FLIP_DISCARD) + { mp_verbose(log, "Using flip-model presentation\n"); } else { mp_verbose(log, "Using bitblt-model presentation\n"); |