Andrew Eikum : dxgi/tests: Add tests to show frame latency object is a semaphore.

Alexandre Julliard julliard at winehq.org
Tue Aug 3 16:52:24 CDT 2021


Module: wine
Branch: master
Commit: 39f2398913d8de02261b42d540efc803694832eb
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=39f2398913d8de02261b42d540efc803694832eb

Author: Andrew Eikum <aeikum at 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 at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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);




More information about the wine-cvs mailing list