diff options
author | James Ross-Gowan <rossy@jrg.systems> | 2022-02-08 22:17:19 +1100 |
---|---|---|
committer | Jan Ekström <jeebjp@gmail.com> | 2022-02-09 17:20:07 +0200 |
commit | 4629fe577fa2adf2267bbf12bad29293d9ad61b3 (patch) | |
tree | 7633560c1ab3809a19bdec78ab6c58f8c3deeb38 | |
parent | f9bf6a601c563015706bed7bdb2b4984119db360 (diff) | |
download | mpv-4629fe577fa2adf2267bbf12bad29293d9ad61b3.tar.bz2 mpv-4629fe577fa2adf2267bbf12bad29293d9ad61b3.tar.xz |
vo_gpu: d3d11_helpers: don't create UNORDERED_ACCESS backbuffers in Win7
We're getting bug reports that the recent change to add extra usage
flags to swapchain buffers (for gpu-next) breaks mpv on some Windows 7
systems, and it seems like this is only happening with flip-model
swapchains.
Creating swapchains with DXGI_USAGE_UNORDERED_ACCESS should be valid. At
least, it's not specifically disallowed, unlike some other flags[1]. So,
just disable it for flip-model swapchains in Windows 7, rather than
disabling it everywhere.
[1]: https://docs.microsoft.com/en-us/windows/win32/direct3ddxgi/dxgi-usage
-rw-r--r-- | video/out/gpu/d3d11_helpers.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/video/out/gpu/d3d11_helpers.c b/video/out/gpu/d3d11_helpers.c index 33d01e0861..8aee0f69ba 100644 --- a/video/out/gpu/d3d11_helpers.c +++ b/video/out/gpu/d3d11_helpers.c @@ -630,6 +630,16 @@ static HRESULT create_swapchain_1_2(ID3D11Device *dev, IDXGIFactory2 *factory, }; if (flip) { + // UNORDERED_ACCESS with FLIP_SEQUENTIAL seems to be buggy with + // Windows 7 drivers + if ((desc.BufferUsage & DXGI_USAGE_UNORDERED_ACCESS) && + !IsWindows8OrGreater()) + { + mp_verbose(log, "Disabling UNORDERED_ACCESS for flip-model " + "swapchain backbuffers in Windows 7\n"); + desc.BufferUsage &= ~DXGI_USAGE_UNORDERED_ACCESS; + } + desc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL; desc.BufferCount = opts->length; } else { |