Module: wine Branch: master Commit: 39f2398913d8de02261b42d540efc803694832eb URL: https://source.winehq.org/git/wine.git/?a=commit;h=39f2398913d8de02261b42d54...
Author: Andrew Eikum aeikum@codeweavers.com Date: Mon Aug 2 12:37:04 2021 -0500
dxgi/tests: Add tests to show frame latency object is a semaphore.
Shin Megami Tensei III Nocturne HD Remaster depends on the frame latency semaphore being released several times after it calls IDXGISwapChain2::SetMaximumFrameLatency(3).
Signed-off-by: Andrew Eikum aeikum@codeweavers.com Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/dxgi/tests/dxgi.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/dlls/dxgi/tests/dxgi.c b/dlls/dxgi/tests/dxgi.c index 7a4204c61b5..a83964d7523 100644 --- a/dlls/dxgi/tests/dxgi.c +++ b/dlls/dxgi/tests/dxgi.c @@ -6982,20 +6982,30 @@ static void test_frame_latency_event(IUnknown *device, BOOL is_d3d12) ok(hr == S_OK, "Got unexpected hr %#x.\n", hr); ok(frame_latency == 1, "Got unexpected frame latency %#x.\n", frame_latency);
- hr = IDXGISwapChain2_SetMaximumFrameLatency(swapchain2, 2); + hr = IDXGISwapChain2_SetMaximumFrameLatency(swapchain2, 3); ok(hr == S_OK, "Got unexpected hr %#x.\n", hr); hr = IDXGISwapChain2_GetMaximumFrameLatency(swapchain2, &frame_latency); ok(hr == S_OK, "Got unexpected hr %#x.\n", hr); - ok(frame_latency == 2, "Got unexpected frame latency %#x.\n", frame_latency); + ok(frame_latency == 3, "Got unexpected frame latency %#x.\n", frame_latency); + + wait_result = WaitForSingleObject(event, 0); + todo_wine ok(!wait_result, "Got unexpected wait result %#x.\n", wait_result); + wait_result = WaitForSingleObject(event, 0); + todo_wine ok(!wait_result, "Got unexpected wait result %#x.\n", wait_result); + wait_result = WaitForSingleObject(event, 100); + ok(wait_result == WAIT_TIMEOUT, "Got unexpected wait result %#x.\n", wait_result);
for (i = 0; i < 5; i++) { hr = IDXGISwapChain2_Present(swapchain2, 0, 0); ok(hr == S_OK, "Present %u failed with hr %#x.\n", i, hr); + + wait_result = WaitForSingleObject(event, 100); + ok(!wait_result, "Got unexpected wait result %#x.\n", wait_result); }
- wait_result = WaitForSingleObject(event, 1000); - ok(!wait_result, "Got unexpected wait result %#x.\n", wait_result); + wait_result = WaitForSingleObject(event, 100); + ok(wait_result == WAIT_TIMEOUT, "Got unexpected wait result %#x.\n", wait_result);
ref_count = IDXGISwapChain2_Release(swapchain2); ok(!ref_count, "Swap chain has %u references left.\n", ref_count);