From: Zhiyi Zhang <zzhang@codeweavers.com> DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT has been implemented since e86f7a7b. --- dlls/dxgi/tests/dxgi.c | 6 ++++-- dlls/dxgi/utils.c | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/dlls/dxgi/tests/dxgi.c b/dlls/dxgi/tests/dxgi.c index 092e3eaffb5..0aa7ee5a2ad 100644 --- a/dlls/dxgi/tests/dxgi.c +++ b/dlls/dxgi/tests/dxgi.c @@ -4804,7 +4804,8 @@ static void test_swapchain_resize(IUnknown *device, BOOL is_d3d12) hr = IDXGISwapChain_GetDesc(tmp_swapchain, &swapchain_desc); ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); todo_wine_if(!is_d3d12 && !(flag == DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE - || flag == DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH)) + || flag == DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH + || flag == DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT)) ok(swapchain_desc.Flags == flag, "Got unexpected Flags %#x.\n", swapchain_desc.Flags); /* Test turning on the flag used at swapchain creation */ hr = IDXGISwapChain_ResizeBuffers(tmp_swapchain, 2, 320, 240, DXGI_FORMAT_B8G8R8A8_UNORM, flag); @@ -4930,7 +4931,8 @@ static void test_swapchain_resize(IUnknown *device, BOOL is_d3d12) hr = IDXGISwapChain_GetDesc(tmp_swapchain, &swapchain_desc); ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); todo_wine_if(!is_d3d12 && !(flag == DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH - || flag == DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE)) + || flag == DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE + || flag == DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT)) ok(swapchain_desc.Flags == flag, "Got unexpected Flags %#x.\n", swapchain_desc.Flags); /* Test turning on the flag used at swapchain creation */ hr = IDXGISwapChain3_ResizeBuffers1(tmp_swapchain3, 2, 320, 240, DXGI_FORMAT_B8G8R8A8_UNORM, diff --git a/dlls/dxgi/utils.c b/dlls/dxgi/utils.c index 3e07f27ff0a..e958c4d043b 100644 --- a/dlls/dxgi/utils.c +++ b/dlls/dxgi/utils.c @@ -540,6 +540,12 @@ unsigned int dxgi_swapchain_flags_from_wined3d(unsigned int wined3d_flags) flags |= DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE; } + if (wined3d_flags & WINED3D_SWAPCHAIN_FRAME_LATENCY_WAITABLE_OBJECT) + { + wined3d_flags &= ~WINED3D_SWAPCHAIN_FRAME_LATENCY_WAITABLE_OBJECT; + flags |= DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT; + } + if (wined3d_flags) FIXME("Unhandled flags %#x.\n", flags); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11391