Commit e1cdc487 authored by Giovanni Mascellani's avatar Giovanni Mascellani Committed by Alexandre Julliard

dxgi/tests: Test that the present count is updated when Present() is called.

parent 1a0c2d6b
......@@ -7727,7 +7727,10 @@ static void test_swapchain_present_count(IUnknown *device, BOOL is_d3d12)
};
UINT present_count, expected;
ID3D12Device *d3d12_device;
ID3D12CommandQueue *queue;
IDXGISwapChain *swapchain;
ID3D12Fence *fence;
unsigned int i;
HWND window;
HRESULT hr;
......@@ -7785,6 +7788,42 @@ static void test_swapchain_present_count(IUnknown *device, BOOL is_d3d12)
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
ok(present_count == expected, "Got unexpected present count %u, expected %u.\n", present_count, expected);
if (is_d3d12)
{
hr = IUnknown_QueryInterface(device, &IID_ID3D12CommandQueue, (void **)&queue);
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
hr = ID3D12CommandQueue_GetDevice(queue, &IID_ID3D12Device, (void **)&d3d12_device);
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
hr = ID3D12Device_CreateFence(d3d12_device, 0, 0, &IID_ID3D12Fence, (void **)&fence);
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
hr = ID3D12CommandQueue_Wait(queue, fence, 1);
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
/* The present count is updated when Present() is called,
* not when frames are presented. */
hr = IDXGISwapChain_Present(swapchain, 0, 0);
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
expected = present_count + 1;
hr = IDXGISwapChain_GetLastPresentCount(swapchain, &present_count);
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
ok(present_count == expected, "Got unexpected present count %u, expected %u.\n", present_count, expected);
hr = ID3D12Fence_Signal(fence, 1);
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
expected = present_count;
hr = IDXGISwapChain_GetLastPresentCount(swapchain, &present_count);
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
ok(present_count == expected, "Got unexpected present count %u, expected %u.\n", present_count, expected);
ID3D12Fence_Release(fence);
ID3D12Device_Release(d3d12_device);
ID3D12CommandQueue_Release(queue);
}
IDXGISwapChain_Release(swapchain);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment