Signed-off-by: Józef Kucia <jkucia(a)codeweavers.com>
---
dlls/dxgi/tests/dxgi.c | 138 ++++++++++++++++++++++++-----------------
1 file changed, 81 insertions(+), 57 deletions(-)
diff --git a/dlls/dxgi/tests/dxgi.c b/dlls/dxgi/tests/dxgi.c
index fcbaf791dc4e..23d6a29c8ed3 100644
--- a/dlls/dxgi/tests/dxgi.c
+++ b/dlls/dxgi/tests/dxgi.c
@@ -141,6 +141,12 @@ static HRESULT check_interface_(unsigned int line, void *iface, REFIID iid,
return hr;
}
+static BOOL is_flip_model(DXGI_SWAP_EFFECT swap_effect)
+{
+ return swap_effect == DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL
+ || swap_effect == DXGI_SWAP_EFFECT_FLIP_DISCARD;
+}
+
static unsigned int check_multisample_quality_levels(IDXGIDevice *dxgi_device,
DXGI_FORMAT format, unsigned int sample_count)
{
@@ -1404,13 +1410,13 @@ static void test_create_swapchain(void)
creation_desc.Flags = 0;
hr = IDXGIDevice_QueryInterface(device, &IID_IUnknown, (void **)&obj);
- ok(SUCCEEDED(hr), "IDXGIDevice does not implement IUnknown.\n");
+ ok(hr == S_OK, "IDXGIDevice does not implement IUnknown.\n");
hr = IDXGIDevice_GetAdapter(device, &adapter);
- ok(SUCCEEDED(hr), "GetAdapter failed, hr %#x.\n", hr);
+ ok(hr == S_OK, "Failed to get adapter, hr %#x.\n", hr);
hr = IDXGIAdapter_GetParent(adapter, &IID_IDXGIFactory, (void **)&factory);
- ok(SUCCEEDED(hr), "GetParent failed, hr %#x.\n", hr);
+ ok(hr == S_OK, "Failed to get parent, hr %#x.\n", hr);
expected_refcount = get_refcount((IUnknown *)adapter);
refcount = get_refcount((IUnknown *)factory);
@@ -1433,7 +1439,7 @@ static void test_create_swapchain(void)
hr = IDXGIFactory_CreateSwapChain(factory, obj, &creation_desc, NULL);
ok(hr == DXGI_ERROR_INVALID_CALL, "Got unexpected hr %#x.\n", hr);
hr = IDXGIFactory_CreateSwapChain(factory, obj, &creation_desc, &swapchain);
- ok(SUCCEEDED(hr), "Failed to create swapchain, hr %#x.\n", hr);
+ ok(hr == S_OK, "Failed to create swapchain, hr %#x.\n", hr);
refcount = get_refcount((IUnknown *)adapter);
ok(refcount >= expected_refcount, "Got refcount %u, expected >= %u.\n", refcount, expected_refcount);
@@ -1446,13 +1452,13 @@ static void test_create_swapchain(void)
ok(hr == E_INVALIDARG, "GetDesc unexpectedly returned %#x.\n", hr);
hr = IDXGISwapChain_GetParent(swapchain, &IID_IUnknown, (void **)&parent);
- ok(SUCCEEDED(hr), "GetParent failed %#x.\n", hr);
+ ok(hr == S_OK, "Failed to get parent,%#x.\n", hr);
ok(parent == (IUnknown *)factory, "Got unexpected parent interface pointer %p.\n", parent);
refcount = IUnknown_Release(parent);
todo_wine ok(refcount == 4, "Got unexpected refcount %u.\n", refcount);
hr = IDXGISwapChain_GetParent(swapchain, &IID_IDXGIFactory, (void **)&parent);
- ok(SUCCEEDED(hr), "GetParent failed %#x.\n", hr);
+ ok(hr == S_OK, "Failed to get parent,%#x.\n", hr);
ok(parent == (IUnknown *)factory, "Got unexpected parent interface pointer %p.\n", parent);
refcount = IUnknown_Release(parent);
todo_wine ok(refcount == 4, "Got unexpected refcount %u.\n", refcount);
@@ -1495,10 +1501,10 @@ static void test_create_swapchain(void)
creation_desc.BufferDesc.RefreshRate.Denominator = refresh_list[i].denominator;
hr = IDXGIFactory_CreateSwapChain(factory, obj, &creation_desc, &swapchain);
- ok(SUCCEEDED(hr), "Test %u: CreateSwapChain failed, hr %#x.\n", i, hr);
+ ok(hr == S_OK, "Test %u: Failed to create swapchain, hr %#x.\n", i, hr);
hr = IDXGISwapChain_GetDesc(swapchain, &result_desc);
- ok(SUCCEEDED(hr), "Test %u: GetDesc failed, hr %#x.\n", i, hr);
+ ok(hr == S_OK, "Test %u: Failed to get swapchain desc, hr %#x.\n", i, hr);
ok(result_desc.Windowed == creation_desc.Windowed, "Test %u: Got unexpected windowed %#x.\n",
i, result_desc.Windowed);
@@ -1514,7 +1520,7 @@ static void test_create_swapchain(void)
fullscreen = 0xdeadbeef;
target = (void *)0xdeadbeef;
hr = IDXGISwapChain_GetFullscreenState(swapchain, &fullscreen, &target);
- ok(hr == S_OK, "Test %u: GetFullscreenState failed, hr %#x.\n", i, hr);
+ ok(hr == S_OK, "Test %u: Failed to get fullscreen state, hr %#x.\n", i, hr);
ok(!fullscreen, "Test %u: Got unexpected fullscreen %#x.\n", i, fullscreen);
ok(!target, "Test %u: Got unexpected target %p.\n", i, target);
@@ -1540,10 +1546,10 @@ static void test_create_swapchain(void)
ok(!!bgra_device, "Failed to create BGRA capable device.\n");
hr = IDXGIDevice_QueryInterface(bgra_device, &IID_IUnknown, (void **)&obj2);
- ok(SUCCEEDED(hr), "IDXGIDevice does not implement IUnknown.\n");
+ ok(hr == S_OK, "IDXGIDevice does not implement IUnknown.\n");
hr = IDXGIFactory_CreateSwapChain(factory, obj2, &creation_desc, &swapchain);
- ok(SUCCEEDED(hr), "CreateSwapChain failed, hr %#x.\n", hr);
+ ok(hr == S_OK, "Failed to create swapchain, hr %#x.\n", hr);
hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface1, (void **)&surface);
if (SUCCEEDED(hr))
@@ -1560,16 +1566,16 @@ static void test_create_swapchain(void)
creation_desc.Flags = DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE;
hr = IDXGIFactory_CreateSwapChain(factory, obj2, &creation_desc, &swapchain);
- ok(SUCCEEDED(hr), "CreateSwapChain failed, hr %#x.\n", hr);
+ ok(hr == S_OK, "Failed to create swapchain, hr %#x.\n", hr);
creation_desc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
creation_desc.Flags = 0;
hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface1, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get front buffer, hr %#x.\n", hr);
+ ok(hr == S_OK, "Failed to get front buffer, hr %#x.\n", hr);
hr = IDXGISurface1_GetDC(surface, FALSE, &hdc);
- ok(SUCCEEDED(hr), "Expected GetDC() to succeed, %#x\n", hr);
+ ok(hr == S_OK, "Expected GetDC() to succeed, %#x\n", hr);
IDXGISurface1_ReleaseDC(surface, NULL);
IDXGISurface1_Release(surface);
@@ -1591,10 +1597,10 @@ static void test_create_swapchain(void)
creation_desc.BufferDesc.RefreshRate.Denominator = refresh_list[i].denominator;
hr = IDXGIFactory_CreateSwapChain(factory, obj, &creation_desc, &swapchain);
- ok(SUCCEEDED(hr), "Test %u: CreateSwapChain failed, hr %#x.\n", i, hr);
+ ok(SUCCEEDED(hr), "Test %u: Failed to create swapchain, hr %#x.\n", i, hr);
hr = IDXGISwapChain_GetDesc(swapchain, &result_desc);
- ok(SUCCEEDED(hr), "Test %u: GetDesc failed, hr %#x.\n", i, hr);
+ ok(hr == S_OK, "Test %u: Failed to get swapchain desc, hr %#x.\n", i, hr);
/* When numerator is non-zero and denominator is zero, the windowed mode is used.
* Additionally, some versions of WARP seem to always fail to change fullscreen state. */
@@ -1612,7 +1618,7 @@ static void test_create_swapchain(void)
fullscreen = FALSE;
target = NULL;
hr = IDXGISwapChain_GetFullscreenState(swapchain, &fullscreen, &target);
- ok(hr == S_OK, "Test %u: GetFullscreenState failed, hr %#x.\n", i, hr);
+ ok(hr == S_OK, "Test %u: Failed to get fullscreen state, hr %#x.\n", i, hr);
ok(fullscreen == !result_desc.Windowed, "Test %u: Got fullscreen %#x, expected %#x.\n",
i, fullscreen, result_desc.Windowed);
ok(result_desc.Windowed ? !target : !!target, "Test %u: Got unexpected target %p.\n", i, target);
@@ -1620,7 +1626,7 @@ static void test_create_swapchain(void)
{
IDXGIOutput *containing_output;
hr = IDXGISwapChain_GetContainingOutput(swapchain, &containing_output);
- ok(SUCCEEDED(hr), "Test %u: GetContainingOutput failed, hr %#x.\n", i, hr);
+ ok(hr == S_OK, "Test %u: Failed to get containing output, hr %#x.\n", i, hr);
ok(containing_output == target, "Test %u: Got unexpected containing output pointer %p.\n",
i, containing_output);
IDXGIOutput_Release(containing_output);
@@ -1644,12 +1650,12 @@ static void test_create_swapchain(void)
}
hr = IDXGISwapChain_SetFullscreenState(swapchain, FALSE, NULL);
- ok(SUCCEEDED(hr), "Test %u: SetFullscreenState failed, hr %#x.\n", i, hr);
+ ok(hr == S_OK, "Test %u: Failed to set fullscreen state, hr %#x.\n", i, hr);
fullscreen = 0xdeadbeef;
target = (void *)0xdeadbeef;
hr = IDXGISwapChain_GetFullscreenState(swapchain, &fullscreen, &target);
- ok(hr == S_OK, "Test %u: GetFullscreenState failed, hr %#x.\n", i, hr);
+ ok(hr == S_OK, "Test %u: Failed to get fullscreen state, hr %#x.\n", i, hr);
ok(!fullscreen, "Test %u: Got unexpected fullscreen %#x.\n", i, fullscreen);
ok(!target, "Test %u: Got unexpected target %p.\n", i, target);
@@ -1659,6 +1665,26 @@ static void test_create_swapchain(void)
check_window_fullscreen_state(creation_desc.OutputWindow, &initial_state.fullscreen_state);
+ /* Test swapchain creation with DXGI_FORMAT_UNKNOWN. */
+ creation_desc.BufferDesc.Format = DXGI_FORMAT_UNKNOWN;
+ creation_desc.Windowed = TRUE;
+ creation_desc.Flags = 0;
+ hr = IDXGIFactory_CreateSwapChain(factory, obj, &creation_desc, &swapchain);
+ ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr);
+
+ creation_desc.Windowed = FALSE;
+ hr = IDXGIFactory_CreateSwapChain(factory, obj, &creation_desc, &swapchain);
+ ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr);
+
+ creation_desc.BufferCount = 2;
+ creation_desc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD;
+ hr = IDXGIFactory_CreateSwapChain(factory, obj, &creation_desc, &swapchain);
+ ok(hr == E_INVALIDARG || hr == DXGI_ERROR_INVALID_CALL, "Got unexpected hr %#x.\n", hr);
+ creation_desc.BufferCount = 1;
+ creation_desc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
+
+ check_window_fullscreen_state(creation_desc.OutputWindow, &initial_state.fullscreen_state);
+
/* Test swapchain creation with backbuffer width and height equal to 0. */
expected_state = initial_state;
expected_client_rect = &expected_state.fullscreen_state.client_rect;
@@ -1669,12 +1695,13 @@ static void test_create_swapchain(void)
creation_desc.BufferDesc.Width = 0;
creation_desc.BufferDesc.Height = 0;
+ creation_desc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
creation_desc.Windowed = TRUE;
creation_desc.Flags = 0;
hr = IDXGIFactory_CreateSwapChain(factory, obj, &creation_desc, &swapchain);
- ok(SUCCEEDED(hr), "CreateSwapChain failed, hr %#x.\n", hr);
+ ok(hr == S_OK, "Failed to create swapchain, hr %#x.\n", hr);
hr = IDXGISwapChain_GetDesc(swapchain, &result_desc);
- ok(SUCCEEDED(hr), "GetDesc failed, hr %#x.\n", hr);
+ ok(hr == S_OK, "Failed to get swapchain desc, hr %#x.\n", hr);
ok(result_desc.BufferDesc.Width == expected_width, "Got width %u, expected %u.\n",
result_desc.BufferDesc.Width, expected_width);
ok(result_desc.BufferDesc.Height == expected_height, "Got height %u, expected %u.\n",
@@ -1694,9 +1721,9 @@ static void test_create_swapchain(void)
creation_desc.BufferDesc.Width = 0;
creation_desc.BufferDesc.Height = 0;
hr = IDXGIFactory_CreateSwapChain(factory, obj, &creation_desc, &swapchain);
- ok(SUCCEEDED(hr), "CreateSwapChain failed, hr %#x.\n", hr);
+ ok(hr == S_OK, "Failed to create swapchain, hr %#x.\n", hr);
hr = IDXGISwapChain_GetDesc(swapchain, &result_desc);
- ok(SUCCEEDED(hr), "GetDesc failed, hr %#x.\n", hr);
+ ok(hr == S_OK, "Failed to get swapchain desc, hr %#x.\n", hr);
ok(result_desc.BufferDesc.Width == expected_width, "Got width %u, expected %u.\n",
result_desc.BufferDesc.Width, expected_width);
ok(result_desc.BufferDesc.Height == expected_height, "Got height %u, expected %u.\n",
@@ -1715,9 +1742,9 @@ static void test_create_swapchain(void)
creation_desc.BufferDesc.Width = 0;
creation_desc.BufferDesc.Height = 0;
hr = IDXGIFactory_CreateSwapChain(factory, obj, &creation_desc, &swapchain);
- ok(SUCCEEDED(hr), "CreateSwapChain failed, hr %#x.\n", hr);
+ ok(hr == S_OK, "Failed to create swapchain, hr %#x.\n", hr);
hr = IDXGISwapChain_GetDesc(swapchain, &result_desc);
- ok(SUCCEEDED(hr), "GetDesc failed, hr %#x.\n", hr);
+ ok(hr == S_OK, "Failed to get swapchain desc, hr %#x.\n", hr);
ok(result_desc.BufferDesc.Width == expected_width, "Got width %u, expected %u.\n",
result_desc.BufferDesc.Width, expected_width);
ok(result_desc.BufferDesc.Height == expected_height, "Got height %u, expected %u.\n",
@@ -1732,14 +1759,14 @@ static void test_create_swapchain(void)
/* Fullscreen */
creation_desc.Windowed = FALSE;
hr = IDXGIFactory_CreateSwapChain(factory, obj, &creation_desc, &swapchain);
- ok(SUCCEEDED(hr), "CreateSwapChain failed, hr %#x.\n", hr);
+ ok(SUCCEEDED(hr), "Failed to create swapchain, hr %#x.\n", hr);
hr = IDXGISwapChain_GetDesc(swapchain, &result_desc);
- ok(SUCCEEDED(hr), "GetDesc failed, hr %#x.\n", hr);
+ ok(hr == S_OK, "Failed to get swapchain desc, hr %#x.\n", hr);
hr = IDXGISwapChain_SetFullscreenState(swapchain, FALSE, NULL);
- ok(SUCCEEDED(hr), "SetFullscreenState failed, hr %#x.\n", hr);
+ ok(hr == S_OK, "Failed to set fullscreen state, hr %#x.\n", hr);
hr = IDXGISwapChain_GetContainingOutput(swapchain, &expected_state.target);
- ok(SUCCEEDED(hr) || broken(hr == DXGI_ERROR_UNSUPPORTED) /* Win 7 testbot */,
- "GetContainingOutput failed, hr %#x.\n", hr);
+ ok(hr == S_OK || broken(hr == DXGI_ERROR_UNSUPPORTED) /* Win 7 testbot */,
+ "Failed to get containing output, hr %#x.\n", hr);
check_swapchain_fullscreen_state(swapchain, &initial_state);
IDXGISwapChain_Release(swapchain);
if (hr == DXGI_ERROR_UNSUPPORTED)
@@ -1764,16 +1791,16 @@ static void test_create_swapchain(void)
expected_height = expected_client_rect->bottom - expected_client_rect->top;
hr = IDXGIFactory_CreateSwapChain(factory, obj, &creation_desc, &swapchain);
- ok(SUCCEEDED(hr), "CreateSwapChain failed, hr %#x.\n", hr);
+ ok(hr == S_OK, "Failed to create swapchain, hr %#x.\n", hr);
hr = IDXGISwapChain_GetDesc(swapchain, &result_desc);
- ok(SUCCEEDED(hr), "GetDesc failed, hr %#x.\n", hr);
+ ok(hr == S_OK, "Failed to get swapchain desc, hr %#x.\n", hr);
todo_wine ok(result_desc.BufferDesc.Width == expected_width, "Got width %u, expected %u.\n",
result_desc.BufferDesc.Width, expected_width);
todo_wine ok(result_desc.BufferDesc.Height == expected_height, "Got height %u, expected %u.\n",
result_desc.BufferDesc.Height, expected_height);
check_swapchain_fullscreen_state(swapchain, &expected_state);
hr = IDXGISwapChain_SetFullscreenState(swapchain, FALSE, NULL);
- ok(SUCCEEDED(hr), "SetFullscreenState failed, hr %#x.\n", hr);
+ ok(hr == S_OK, "Failed to set fullscreen state, hr %#x.\n", hr);
check_swapchain_fullscreen_state(swapchain, &initial_state);
IDXGISwapChain_Release(swapchain);
@@ -1788,16 +1815,16 @@ static void test_create_swapchain(void)
expected_height = expected_client_rect->bottom - expected_client_rect->top;
hr = IDXGIFactory_CreateSwapChain(factory, obj, &creation_desc, &swapchain);
- ok(SUCCEEDED(hr), "CreateSwapChain failed, hr %#x.\n", hr);
+ ok(hr == S_OK, "Failed to create swapchain, hr %#x.\n", hr);
hr = IDXGISwapChain_GetDesc(swapchain, &result_desc);
- ok(SUCCEEDED(hr), "GetDesc failed, hr %#x.\n", hr);
+ ok(hr == S_OK, "Failed to get swapchain desc, hr %#x.\n", hr);
todo_wine ok(result_desc.BufferDesc.Width == expected_width, "Got width %u, expected %u.\n",
result_desc.BufferDesc.Width, expected_width);
todo_wine ok(result_desc.BufferDesc.Height == expected_height, "Got height %u, expected %u.\n",
result_desc.BufferDesc.Height, expected_height);
check_swapchain_fullscreen_state(swapchain, &expected_state);
hr = IDXGISwapChain_SetFullscreenState(swapchain, FALSE, NULL);
- ok(SUCCEEDED(hr), "SetFullscreenState failed, hr %#x.\n", hr);
+ ok(hr == S_OK, "Failed to set fullscreen state, hr %#x.\n", hr);
check_swapchain_fullscreen_state(swapchain, &initial_state);
IDXGISwapChain_Release(swapchain);
@@ -3993,17 +4020,12 @@ static void test_swapchain_backbuffer_index(IUnknown *device, BOOL is_d3d12)
RECT rect;
BOOL ret;
- static const struct
+ static const DXGI_SWAP_EFFECT swap_effects[] =
{
- DXGI_SWAP_EFFECT swap_effect;
- BOOL supported_in_d3d12;
- }
- tests[] =
- {
- {DXGI_SWAP_EFFECT_DISCARD, FALSE},
- {DXGI_SWAP_EFFECT_SEQUENTIAL, FALSE},
- {DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL, TRUE},
- {DXGI_SWAP_EFFECT_FLIP_DISCARD, TRUE},
+ DXGI_SWAP_EFFECT_DISCARD,
+ DXGI_SWAP_EFFECT_SEQUENTIAL,
+ DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL,
+ DXGI_SWAP_EFFECT_FLIP_DISCARD,
};
get_factory(device, is_d3d12, &factory);
@@ -4027,10 +4049,10 @@ static void test_swapchain_backbuffer_index(IUnknown *device, BOOL is_d3d12)
swapchain_desc.BufferDesc.Width = rect.right;
swapchain_desc.BufferDesc.Height = rect.bottom;
- for (i = 0; i < ARRAY_SIZE(tests); ++i)
+ for (i = 0; i < ARRAY_SIZE(swap_effects); ++i)
{
- swapchain_desc.SwapEffect = tests[i].swap_effect;
- expected_hr = is_d3d12 && !tests[i].supported_in_d3d12 ? DXGI_ERROR_INVALID_CALL : S_OK;
+ swapchain_desc.SwapEffect = swap_effects[i];
+ expected_hr = is_d3d12 && !is_flip_model(swap_effects[i]) ? DXGI_ERROR_INVALID_CALL : S_OK;
hr = IDXGIFactory_CreateSwapChain(factory, device, &swapchain_desc, &swapchain);
ok(hr == expected_hr, "Got hr %#x, expected %#x.\n", hr, expected_hr);
if (FAILED(hr))
@@ -4074,7 +4096,6 @@ static void test_swapchain_formats(IUnknown *device, BOOL is_d3d12)
IDXGIFactory *factory;
unsigned int i;
ULONG refcount;
- BOOL is_flip;
RECT rect;
BOOL ret;
@@ -4086,6 +4107,10 @@ static void test_swapchain_formats(IUnknown *device, BOOL is_d3d12)
}
tests[] =
{
+ {DXGI_FORMAT_UNKNOWN, DXGI_SWAP_EFFECT_DISCARD, FALSE},
+ {DXGI_FORMAT_UNKNOWN, DXGI_SWAP_EFFECT_SEQUENTIAL, FALSE},
+ {DXGI_FORMAT_UNKNOWN, DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL, FALSE},
+ {DXGI_FORMAT_UNKNOWN, DXGI_SWAP_EFFECT_FLIP_DISCARD, FALSE},
{DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_SWAP_EFFECT_DISCARD, TRUE},
{DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_SWAP_EFFECT_SEQUENTIAL, TRUE},
{DXGI_FORMAT_R8G8B8A8_UNORM, DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL, TRUE},
@@ -4135,20 +4160,19 @@ static void test_swapchain_formats(IUnknown *device, BOOL is_d3d12)
for (i = 0; i < ARRAY_SIZE(tests); ++i)
{
- is_flip = tests[i].swap_effect == DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL
- || tests[i].swap_effect == DXGI_SWAP_EFFECT_FLIP_DISCARD;
-
- if (is_d3d12 && !is_flip)
+ if (is_d3d12 && !is_flip_model(tests[i].swap_effect))
continue;
swapchain_desc.BufferDesc.Format = tests[i].format;
swapchain_desc.SwapEffect = tests[i].swap_effect;
hr = IDXGIFactory_CreateSwapChain(factory, device, &swapchain_desc, &swapchain);
expected_hr = tests[i].supported ? S_OK : DXGI_ERROR_INVALID_CALL;
+ if (tests[i].format == DXGI_FORMAT_UNKNOWN && !is_d3d12)
+ expected_hr = E_INVALIDARG;
ok(hr == expected_hr
/* Flip presentation model not supported. */
- || broken(is_flip && hr == DXGI_ERROR_INVALID_CALL),
- "Test %u: Got hr %#x, expected %#x.\n", i, hr, expected_hr);
+ || broken(hr == DXGI_ERROR_INVALID_CALL && is_flip_model(tests[i].swap_effect) && !is_d3d12),
+ "Test %u, d3d12 %#x: Got hr %#x, expected %#x.\n", i, is_d3d12, hr, expected_hr);
if (SUCCEEDED(hr))
{
--
2.19.2