[PATCH 5/6] dxgi/tests: Run test_swapchain_resize() on D3D12.
Józef Kucia
jkucia at codeweavers.com
Wed Aug 29 05:53:38 CDT 2018
Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
dlls/dxgi/tests/dxgi.c | 266 +++++++++++++++++++++++++++++--------------------
1 file changed, 159 insertions(+), 107 deletions(-)
diff --git a/dlls/dxgi/tests/dxgi.c b/dlls/dxgi/tests/dxgi.c
index 56065456eb0d..376c1ecd6fdf 100644
--- a/dlls/dxgi/tests/dxgi.c
+++ b/dlls/dxgi/tests/dxgi.c
@@ -3026,38 +3026,105 @@ static void test_private_data(void)
ok(!refcount, "Test object has %u references left.\n", refcount);
}
-static void test_swapchain_resize(void)
+#define check_surface_desc(a, b) check_surface_desc_(__LINE__, a, b)
+static void check_surface_desc_(unsigned int line, IDXGISurface *surface,
+ const DXGI_SWAP_CHAIN_DESC *swapchain_desc)
+{
+ DXGI_SURFACE_DESC surface_desc;
+ HRESULT hr;
+
+ hr = IDXGISurface_GetDesc(surface, &surface_desc);
+ ok_(__FILE__, line)(hr == S_OK, "Failed to get surface desc, hr %#x.\n", hr);
+ ok_(__FILE__, line)(surface_desc.Width == swapchain_desc->BufferDesc.Width,
+ "Got Width %u, expected %u.\n", surface_desc.Width, swapchain_desc->BufferDesc.Width);
+ ok_(__FILE__, line)(surface_desc.Height == swapchain_desc->BufferDesc.Height,
+ "Got Height %u, expected %u.\n", surface_desc.Height, swapchain_desc->BufferDesc.Height);
+ ok_(__FILE__, line)(surface_desc.Format == swapchain_desc->BufferDesc.Format,
+ "Got Format %#x, expected %#x.\n", surface_desc.Format, swapchain_desc->BufferDesc.Format);
+ ok_(__FILE__, line)(surface_desc.SampleDesc.Count == 1,
+ "Got unexpected SampleDesc.Count %u.\n", surface_desc.SampleDesc.Count);
+ ok_(__FILE__, line)(!surface_desc.SampleDesc.Quality,
+ "Got unexpected SampleDesc.Quality %u.\n", surface_desc.SampleDesc.Quality);
+}
+
+#define check_texture_desc(a, b) check_texture_desc_(__LINE__, a, b)
+static void check_texture_desc_(unsigned int line, ID3D10Texture2D *texture,
+ const DXGI_SWAP_CHAIN_DESC *swapchain_desc)
{
- DXGI_SWAP_CHAIN_DESC swapchain_desc;
D3D10_TEXTURE2D_DESC texture_desc;
- DXGI_SURFACE_DESC surface_desc;
+
+ ID3D10Texture2D_GetDesc(texture, &texture_desc);
+ ok_(__FILE__, line)(texture_desc.Width == swapchain_desc->BufferDesc.Width,
+ "Got Width %u, expected %u.\n", texture_desc.Width, swapchain_desc->BufferDesc.Width);
+ ok_(__FILE__, line)(texture_desc.Height == swapchain_desc->BufferDesc.Height,
+ "Got Height %u, expected %u.\n", texture_desc.Height, swapchain_desc->BufferDesc.Height);
+ ok_(__FILE__, line)(texture_desc.MipLevels == 1, "Got unexpected MipLevels %u.\n", texture_desc.MipLevels);
+ ok_(__FILE__, line)(texture_desc.ArraySize == 1, "Got unexpected ArraySize %u.\n", texture_desc.ArraySize);
+ ok_(__FILE__, line)(texture_desc.Format == swapchain_desc->BufferDesc.Format,
+ "Got Format %#x, expected %#x.\n", texture_desc.Format, swapchain_desc->BufferDesc.Format);
+ ok_(__FILE__, line)(texture_desc.SampleDesc.Count == 1,
+ "Got unexpected SampleDesc.Count %u.\n", texture_desc.SampleDesc.Count);
+ ok_(__FILE__, line)(!texture_desc.SampleDesc.Quality,
+ "Got unexpected SampleDesc.Quality %u.\n", texture_desc.SampleDesc.Quality);
+ ok_(__FILE__, line)(texture_desc.Usage == D3D10_USAGE_DEFAULT,
+ "Got unexpected Usage %#x.\n", texture_desc.Usage);
+ ok_(__FILE__, line)(texture_desc.BindFlags == D3D10_BIND_RENDER_TARGET,
+ "Got unexpected BindFlags %#x.\n", texture_desc.BindFlags);
+ ok_(__FILE__, line)(!texture_desc.CPUAccessFlags,
+ "Got unexpected CPUAccessFlags %#x.\n", texture_desc.CPUAccessFlags);
+ ok_(__FILE__, line)(!texture_desc.MiscFlags, "Got unexpected MiscFlags %#x.\n", texture_desc.MiscFlags);
+}
+
+#define check_resource_desc(a, b) check_resource_desc_(__LINE__, a, b)
+static void check_resource_desc_(unsigned int line, ID3D12Resource *resource,
+ const DXGI_SWAP_CHAIN_DESC *swapchain_desc)
+{
+ D3D12_RESOURCE_DESC resource_desc;
+
+ resource_desc = ID3D12Resource_GetDesc(resource);
+ ok_(__FILE__, line)(resource_desc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE2D,
+ "Got unexpected Dimension %#x.\n", resource_desc.Dimension);
+ ok_(__FILE__, line)(resource_desc.Width == swapchain_desc->BufferDesc.Width, "Got Width %s, expected %u.\n",
+ wine_dbgstr_longlong(resource_desc.Width), swapchain_desc->BufferDesc.Width);
+ ok_(__FILE__, line)(resource_desc.Height == swapchain_desc->BufferDesc.Height,
+ "Got Height %u, expected %u.\n", resource_desc.Height, swapchain_desc->BufferDesc.Height);
+ ok_(__FILE__, line)(resource_desc.DepthOrArraySize == 1,
+ "Got unexpected DepthOrArraySize %u.\n", resource_desc.DepthOrArraySize);
+ ok_(__FILE__, line)(resource_desc.MipLevels == 1,
+ "Got unexpected MipLevels %u.\n", resource_desc.MipLevels);
+ ok_(__FILE__, line)(resource_desc.Format == swapchain_desc->BufferDesc.Format,
+ "Got Format %#x, expected %#x.\n", resource_desc.Format, swapchain_desc->BufferDesc.Format);
+ ok_(__FILE__, line)(resource_desc.SampleDesc.Count == 1,
+ "Got unexpected SampleDesc.Count %u.\n", resource_desc.SampleDesc.Count);
+ ok_(__FILE__, line)(!resource_desc.SampleDesc.Quality,
+ "Got unexpected SampleDesc.Quality %u.\n", resource_desc.SampleDesc.Quality);
+ ok_(__FILE__, line)(resource_desc.Layout == D3D12_TEXTURE_LAYOUT_UNKNOWN,
+ "Got unexpected Layout %#x.\n", resource_desc.Layout);
+}
+
+static void test_swapchain_resize(IUnknown *device, BOOL is_d3d12)
+{
+ DXGI_SWAP_CHAIN_DESC swapchain_desc;
+ DXGI_SWAP_EFFECT swap_effect;
IDXGISwapChain *swapchain;
+ ID3D12Resource *resource;
ID3D10Texture2D *texture;
+ HRESULT hr, expected_hr;
IDXGISurface *surface;
- IDXGIAdapter *adapter;
IDXGIFactory *factory;
- IDXGIDevice *device;
RECT client_rect, r;
ULONG refcount;
HWND window;
- HRESULT hr;
BOOL ret;
- if (!(device = create_device(0)))
- {
- skip("Failed to create device, skipping tests.\n");
- return;
- }
+ get_factory(device, is_d3d12, &factory);
+
window = CreateWindowA("static", "dxgi_test", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
0, 0, 640, 480, NULL, NULL, NULL, NULL);
ret = GetClientRect(window, &client_rect);
ok(ret, "Failed to get client rect.\n");
- hr = IDXGIDevice_GetAdapter(device, &adapter);
- ok(SUCCEEDED(hr), "Failed to get adapter, hr %#x.\n", hr);
- hr = IDXGIAdapter_GetParent(adapter, &IID_IDXGIFactory, (void **)&factory);
- ok(SUCCEEDED(hr), "Failed to get factory, hr %#x.\n", hr);
- IDXGIAdapter_Release(adapter);
+ swap_effect = is_d3d12 ? DXGI_SWAP_EFFECT_FLIP_DISCARD : DXGI_SWAP_EFFECT_DISCARD;
swapchain_desc.BufferDesc.Width = 640;
swapchain_desc.BufferDesc.Height = 480;
@@ -3069,19 +3136,25 @@ static void test_swapchain_resize(void)
swapchain_desc.SampleDesc.Count = 1;
swapchain_desc.SampleDesc.Quality = 0;
swapchain_desc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
- swapchain_desc.BufferCount = 1;
+ swapchain_desc.BufferCount = 2;
swapchain_desc.OutputWindow = window;
swapchain_desc.Windowed = TRUE;
- swapchain_desc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
+ swapchain_desc.SwapEffect = swap_effect;
swapchain_desc.Flags = 0;
- hr = IDXGIFactory_CreateSwapChain(factory, (IUnknown *)device, &swapchain_desc, &swapchain);
- ok(SUCCEEDED(hr), "Failed to create swapchain, hr %#x.\n", hr);
- IDXGIFactory_Release(factory);
+ hr = IDXGIFactory_CreateSwapChain(factory, device, &swapchain_desc, &swapchain);
+ ok(hr == S_OK, "Failed to create swapchain, hr %#x.\n", hr);
hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
+ expected_hr = is_d3d12 ? E_NOINTERFACE : S_OK;
+ ok(hr == expected_hr, "Got hr %#x, expected %#x.\n", hr, expected_hr);
+ ok(!surface || hr == S_OK, "Got unexpected pointer %p.\n", surface);
hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_ID3D10Texture2D, (void **)&texture);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
+ ok(hr == expected_hr, "Got hr %#x, expected %#x.\n", hr, expected_hr);
+ ok(!texture || hr == S_OK, "Got unexpected pointer %p.\n", texture);
+ expected_hr = is_d3d12 ? S_OK : E_NOINTERFACE;
+ hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_ID3D12Resource, (void **)&resource);
+ ok(hr == expected_hr, "Got hr %#x, expected %#x.\n", hr, expected_hr);
+ ok(!resource || hr == S_OK, "Got unexpected pointer %p.\n", resource);
ret = GetClientRect(window, &r);
ok(ret, "Failed to get client rect.\n");
@@ -3113,39 +3186,25 @@ static void test_swapchain_resize(void)
"Got unexpected SampleDesc.Quality %u.\n", swapchain_desc.SampleDesc.Quality);
ok(swapchain_desc.BufferUsage == DXGI_USAGE_RENDER_TARGET_OUTPUT,
"Got unexpected BufferUsage %#x.\n", swapchain_desc.BufferUsage);
- ok(swapchain_desc.BufferCount == 1,
+ ok(swapchain_desc.BufferCount == 2,
"Got unexpected BufferCount %u.\n", swapchain_desc.BufferCount);
ok(swapchain_desc.OutputWindow == window,
"Got unexpected OutputWindow %p, expected %p.\n", swapchain_desc.OutputWindow, window);
ok(swapchain_desc.Windowed,
"Got unexpected Windowed %#x.\n", swapchain_desc.Windowed);
- ok(swapchain_desc.SwapEffect == DXGI_SWAP_EFFECT_DISCARD,
+ ok(swapchain_desc.SwapEffect == swap_effect,
"Got unexpected SwapEffect %#x.\n", swapchain_desc.SwapEffect);
ok(!swapchain_desc.Flags,
"Got unexpected Flags %#x.\n", swapchain_desc.Flags);
- hr = IDXGISurface_GetDesc(surface, &surface_desc);
- ok(SUCCEEDED(hr), "Failed to get surface desc, hr %#x.\n", hr);
- ok(surface_desc.Width == 640, "Got unexpected Width %u.\n", surface_desc.Width);
- ok(surface_desc.Height == 480, "Got unexpected Height %u.\n", surface_desc.Height);
- ok(surface_desc.Format == DXGI_FORMAT_R8G8B8A8_UNORM, "Got unexpected Format %#x.\n", surface_desc.Format);
- ok(surface_desc.SampleDesc.Count == 1, "Got unexpected SampleDesc.Count %u.\n", surface_desc.SampleDesc.Count);
- ok(!surface_desc.SampleDesc.Quality, "Got unexpected SampleDesc.Quality %u.\n", surface_desc.SampleDesc.Quality);
+ if (surface)
+ check_surface_desc(surface, &swapchain_desc);
+ if (texture)
+ check_texture_desc(texture, &swapchain_desc);
+ if (resource)
+ check_resource_desc(resource, &swapchain_desc);
- ID3D10Texture2D_GetDesc(texture, &texture_desc);
- ok(texture_desc.Width == 640, "Got unexpected Width %u.\n", texture_desc.Width);
- ok(texture_desc.Height == 480, "Got unexpected Height %u.\n", texture_desc.Height);
- ok(texture_desc.MipLevels == 1, "Got unexpected MipLevels %u.\n", texture_desc.MipLevels);
- ok(texture_desc.ArraySize == 1, "Got unexpected ArraySize %u.\n", texture_desc.ArraySize);
- ok(texture_desc.Format == DXGI_FORMAT_R8G8B8A8_UNORM, "Got unexpected Format %#x.\n", texture_desc.Format);
- ok(texture_desc.SampleDesc.Count == 1, "Got unexpected SampleDesc.Count %u.\n", texture_desc.SampleDesc.Count);
- ok(!texture_desc.SampleDesc.Quality, "Got unexpected SampleDesc.Quality %u.\n", texture_desc.SampleDesc.Quality);
- ok(texture_desc.Usage == D3D10_USAGE_DEFAULT, "Got unexpected Usage %#x.\n", texture_desc.Usage);
- ok(texture_desc.BindFlags == D3D10_BIND_RENDER_TARGET, "Got unexpected BindFlags %#x.\n", texture_desc.BindFlags);
- ok(!texture_desc.CPUAccessFlags, "Got unexpected CPUAccessFlags %#x.\n", texture_desc.CPUAccessFlags);
- ok(!texture_desc.MiscFlags, "Got unexpected MiscFlags %#x.\n", texture_desc.MiscFlags);
-
- hr = IDXGISwapChain_ResizeBuffers(swapchain, 1, 320, 240, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, 0);
+ hr = IDXGISwapChain_ResizeBuffers(swapchain, 2, 320, 240, DXGI_FORMAT_B8G8R8A8_UNORM, 0);
ok(hr == DXGI_ERROR_INVALID_CALL, "Got unexpected hr %#x.\n", hr);
ret = GetClientRect(window, &r);
@@ -3178,46 +3237,46 @@ static void test_swapchain_resize(void)
"Got unexpected SampleDesc.Quality %u.\n", swapchain_desc.SampleDesc.Quality);
ok(swapchain_desc.BufferUsage == DXGI_USAGE_RENDER_TARGET_OUTPUT,
"Got unexpected BufferUsage %#x.\n", swapchain_desc.BufferUsage);
- ok(swapchain_desc.BufferCount == 1,
+ ok(swapchain_desc.BufferCount == 2,
"Got unexpected BufferCount %u.\n", swapchain_desc.BufferCount);
ok(swapchain_desc.OutputWindow == window,
"Got unexpected OutputWindow %p, expected %p.\n", swapchain_desc.OutputWindow, window);
ok(swapchain_desc.Windowed,
"Got unexpected Windowed %#x.\n", swapchain_desc.Windowed);
- ok(swapchain_desc.SwapEffect == DXGI_SWAP_EFFECT_DISCARD,
+ ok(swapchain_desc.SwapEffect == swap_effect,
"Got unexpected SwapEffect %#x.\n", swapchain_desc.SwapEffect);
ok(!swapchain_desc.Flags,
"Got unexpected Flags %#x.\n", swapchain_desc.Flags);
- hr = IDXGISurface_GetDesc(surface, &surface_desc);
- ok(SUCCEEDED(hr), "Failed to get surface desc, hr %#x.\n", hr);
- ok(surface_desc.Width == 640, "Got unexpected Width %u.\n", surface_desc.Width);
- ok(surface_desc.Height == 480, "Got unexpected Height %u.\n", surface_desc.Height);
- ok(surface_desc.Format == DXGI_FORMAT_R8G8B8A8_UNORM, "Got unexpected Format %#x.\n", surface_desc.Format);
- ok(surface_desc.SampleDesc.Count == 1, "Got unexpected SampleDesc.Count %u.\n", surface_desc.SampleDesc.Count);
- ok(!surface_desc.SampleDesc.Quality, "Got unexpected SampleDesc.Quality %u.\n", surface_desc.SampleDesc.Quality);
+ if (surface)
+ {
+ check_surface_desc(surface, &swapchain_desc);
+ IDXGISurface_Release(surface);
+ }
+ if (texture)
+ {
+ check_texture_desc(texture, &swapchain_desc);
+ ID3D10Texture2D_Release(texture);
+ }
+ if (resource)
+ {
+ check_resource_desc(resource, &swapchain_desc);
+ ID3D12Resource_Release(resource);
+ }
- ID3D10Texture2D_GetDesc(texture, &texture_desc);
- ok(texture_desc.Width == 640, "Got unexpected Width %u.\n", texture_desc.Width);
- ok(texture_desc.Height == 480, "Got unexpected Height %u.\n", texture_desc.Height);
- ok(texture_desc.MipLevels == 1, "Got unexpected MipLevels %u.\n", texture_desc.MipLevels);
- ok(texture_desc.ArraySize == 1, "Got unexpected ArraySize %u.\n", texture_desc.ArraySize);
- ok(texture_desc.Format == DXGI_FORMAT_R8G8B8A8_UNORM, "Got unexpected Format %#x.\n", texture_desc.Format);
- ok(texture_desc.SampleDesc.Count == 1, "Got unexpected SampleDesc.Count %u.\n", texture_desc.SampleDesc.Count);
- ok(!texture_desc.SampleDesc.Quality, "Got unexpected SampleDesc.Quality %u.\n", texture_desc.SampleDesc.Quality);
- ok(texture_desc.Usage == D3D10_USAGE_DEFAULT, "Got unexpected Usage %#x.\n", texture_desc.Usage);
- ok(texture_desc.BindFlags == D3D10_BIND_RENDER_TARGET, "Got unexpected BindFlags %#x.\n", texture_desc.BindFlags);
- ok(!texture_desc.CPUAccessFlags, "Got unexpected CPUAccessFlags %#x.\n", texture_desc.CPUAccessFlags);
- ok(!texture_desc.MiscFlags, "Got unexpected MiscFlags %#x.\n", texture_desc.MiscFlags);
-
- ID3D10Texture2D_Release(texture);
- IDXGISurface_Release(surface);
- hr = IDXGISwapChain_ResizeBuffers(swapchain, 1, 320, 240, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, 0);
- ok(SUCCEEDED(hr), "Failed to resize buffers, hr %#x.\n", hr);
+ hr = IDXGISwapChain_ResizeBuffers(swapchain, 2, 320, 240, DXGI_FORMAT_B8G8R8A8_UNORM, 0);
+ ok(hr == S_OK, "Failed to resize buffers, hr %#x.\n", hr);
hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_IDXGISurface, (void **)&surface);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
+ expected_hr = is_d3d12 ? E_NOINTERFACE : S_OK;
+ ok(hr == expected_hr, "Got hr %#x, expected %#x.\n", hr, expected_hr);
+ ok(!surface || hr == S_OK, "Got unexpected pointer %p.\n", surface);
hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_ID3D10Texture2D, (void **)&texture);
- ok(SUCCEEDED(hr), "Failed to get buffer, hr %#x.\n", hr);
+ ok(hr == expected_hr, "Got hr %#x, expected %#x.\n", hr, expected_hr);
+ ok(!texture || hr == S_OK, "Got unexpected pointer %p.\n", texture);
+ expected_hr = is_d3d12 ? S_OK : E_NOINTERFACE;
+ hr = IDXGISwapChain_GetBuffer(swapchain, 0, &IID_ID3D12Resource, (void **)&resource);
+ ok(hr == expected_hr, "Got hr %#x, expected %#x.\n", hr, expected_hr);
+ ok(!resource || hr == S_OK, "Got unexpected pointer %p.\n", resource);
ret = GetClientRect(window, &r);
ok(ret, "Failed to get client rect.\n");
@@ -3237,7 +3296,7 @@ static void test_swapchain_resize(void)
ok(swapchain_desc.BufferDesc.RefreshRate.Denominator == 1,
"Got unexpected BufferDesc.RefreshRate.Denominator %u.\n",
swapchain_desc.BufferDesc.RefreshRate.Denominator);
- ok(swapchain_desc.BufferDesc.Format == DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
+ ok(swapchain_desc.BufferDesc.Format == DXGI_FORMAT_B8G8R8A8_UNORM,
"Got unexpected BufferDesc.Format %#x.\n", swapchain_desc.BufferDesc.Format);
ok(swapchain_desc.BufferDesc.ScanlineOrdering == DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED,
"Got unexpected BufferDesc.ScanlineOrdering %#x.\n", swapchain_desc.BufferDesc.ScanlineOrdering);
@@ -3249,43 +3308,35 @@ static void test_swapchain_resize(void)
"Got unexpected SampleDesc.Quality %u.\n", swapchain_desc.SampleDesc.Quality);
ok(swapchain_desc.BufferUsage == DXGI_USAGE_RENDER_TARGET_OUTPUT,
"Got unexpected BufferUsage %#x.\n", swapchain_desc.BufferUsage);
- ok(swapchain_desc.BufferCount == 1,
+ ok(swapchain_desc.BufferCount == 2,
"Got unexpected BufferCount %u.\n", swapchain_desc.BufferCount);
ok(swapchain_desc.OutputWindow == window,
"Got unexpected OutputWindow %p, expected %p.\n", swapchain_desc.OutputWindow, window);
ok(swapchain_desc.Windowed,
"Got unexpected Windowed %#x.\n", swapchain_desc.Windowed);
- ok(swapchain_desc.SwapEffect == DXGI_SWAP_EFFECT_DISCARD,
+ ok(swapchain_desc.SwapEffect == swap_effect,
"Got unexpected SwapEffect %#x.\n", swapchain_desc.SwapEffect);
ok(!swapchain_desc.Flags,
"Got unexpected Flags %#x.\n", swapchain_desc.Flags);
- hr = IDXGISurface_GetDesc(surface, &surface_desc);
- ok(SUCCEEDED(hr), "Failed to get surface desc, hr %#x.\n", hr);
- ok(surface_desc.Width == 320, "Got unexpected Width %u.\n", surface_desc.Width);
- ok(surface_desc.Height == 240, "Got unexpected Height %u.\n", surface_desc.Height);
- ok(surface_desc.Format == DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, "Got unexpected Format %#x.\n", surface_desc.Format);
- ok(surface_desc.SampleDesc.Count == 1, "Got unexpected SampleDesc.Count %u.\n", surface_desc.SampleDesc.Count);
- ok(!surface_desc.SampleDesc.Quality, "Got unexpected SampleDesc.Quality %u.\n", surface_desc.SampleDesc.Quality);
-
- ID3D10Texture2D_GetDesc(texture, &texture_desc);
- ok(texture_desc.Width == 320, "Got unexpected Width %u.\n", texture_desc.Width);
- ok(texture_desc.Height == 240, "Got unexpected Height %u.\n", texture_desc.Height);
- ok(texture_desc.MipLevels == 1, "Got unexpected MipLevels %u.\n", texture_desc.MipLevels);
- ok(texture_desc.ArraySize == 1, "Got unexpected ArraySize %u.\n", texture_desc.ArraySize);
- ok(texture_desc.Format == DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, "Got unexpected Format %#x.\n", texture_desc.Format);
- ok(texture_desc.SampleDesc.Count == 1, "Got unexpected SampleDesc.Count %u.\n", texture_desc.SampleDesc.Count);
- ok(!texture_desc.SampleDesc.Quality, "Got unexpected SampleDesc.Quality %u.\n", texture_desc.SampleDesc.Quality);
- ok(texture_desc.Usage == D3D10_USAGE_DEFAULT, "Got unexpected Usage %#x.\n", texture_desc.Usage);
- ok(texture_desc.BindFlags == D3D10_BIND_RENDER_TARGET, "Got unexpected BindFlags %#x.\n", texture_desc.BindFlags);
- ok(!texture_desc.CPUAccessFlags, "Got unexpected CPUAccessFlags %#x.\n", texture_desc.CPUAccessFlags);
- ok(!texture_desc.MiscFlags, "Got unexpected MiscFlags %#x.\n", texture_desc.MiscFlags);
-
- ID3D10Texture2D_Release(texture);
- IDXGISurface_Release(surface);
+ if (surface)
+ {
+ check_surface_desc(surface, &swapchain_desc);
+ IDXGISurface_Release(surface);
+ }
+ if (texture)
+ {
+ check_texture_desc(texture, &swapchain_desc);
+ ID3D10Texture2D_Release(texture);
+ }
+ if (resource)
+ {
+ check_resource_desc(resource, &swapchain_desc);
+ ID3D12Resource_Release(resource);
+ }
hr = IDXGISwapChain_ResizeBuffers(swapchain, 0, 0, 0, DXGI_FORMAT_UNKNOWN, 0);
- ok(SUCCEEDED(hr), "Failed to resize buffers, hr %#x.\n", hr);
+ ok(hr == S_OK, "Failed to resize buffers, hr %#x.\n", hr);
memset(&swapchain_desc, 0, sizeof(swapchain_desc));
hr = IDXGISwapChain_GetDesc(swapchain, &swapchain_desc);
@@ -3302,7 +3353,7 @@ static void test_swapchain_resize(void)
ok(swapchain_desc.BufferDesc.RefreshRate.Denominator == 1,
"Got unexpected BufferDesc.RefreshRate.Denominator %u.\n",
swapchain_desc.BufferDesc.RefreshRate.Denominator);
- ok(swapchain_desc.BufferDesc.Format == DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
+ ok(swapchain_desc.BufferDesc.Format == DXGI_FORMAT_B8G8R8A8_UNORM,
"Got unexpected BufferDesc.Format %#x.\n", swapchain_desc.BufferDesc.Format);
ok(swapchain_desc.BufferDesc.ScanlineOrdering == DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED,
"Got unexpected BufferDesc.ScanlineOrdering %#x.\n", swapchain_desc.BufferDesc.ScanlineOrdering);
@@ -3314,21 +3365,21 @@ static void test_swapchain_resize(void)
"Got unexpected SampleDesc.Quality %u.\n", swapchain_desc.SampleDesc.Quality);
ok(swapchain_desc.BufferUsage == DXGI_USAGE_RENDER_TARGET_OUTPUT,
"Got unexpected BufferUsage %#x.\n", swapchain_desc.BufferUsage);
- ok(swapchain_desc.BufferCount == 1,
+ ok(swapchain_desc.BufferCount == 2,
"Got unexpected BufferCount %u.\n", swapchain_desc.BufferCount);
ok(swapchain_desc.OutputWindow == window,
"Got unexpected OutputWindow %p, expected %p.\n", swapchain_desc.OutputWindow, window);
ok(swapchain_desc.Windowed,
"Got unexpected Windowed %#x.\n", swapchain_desc.Windowed);
- ok(swapchain_desc.SwapEffect == DXGI_SWAP_EFFECT_DISCARD,
+ ok(swapchain_desc.SwapEffect == swap_effect,
"Got unexpected SwapEffect %#x.\n", swapchain_desc.SwapEffect);
ok(!swapchain_desc.Flags,
"Got unexpected Flags %#x.\n", swapchain_desc.Flags);
IDXGISwapChain_Release(swapchain);
- refcount = IDXGIDevice_Release(device);
- ok(!refcount, "Device has %u references left.\n", refcount);
DestroyWindow(window);
+ refcount = IDXGIFactory_Release(factory);
+ ok(refcount == !is_d3d12, "Got unexpected refcount %u.\n", refcount);
}
static void test_swapchain_parameters(void)
@@ -4143,7 +4194,6 @@ START_TEST(dxgi)
queue_test(test_get_containing_output);
queue_test(test_create_factory);
queue_test(test_private_data);
- queue_test(test_swapchain_resize);
queue_test(test_swapchain_present);
queue_test(test_maximum_frame_latency);
queue_test(test_output_desc);
@@ -4158,6 +4208,7 @@ START_TEST(dxgi)
test_resize_target();
test_inexact_modes();
test_swapchain_parameters();
+ run_on_d3d10(test_swapchain_resize);
run_on_d3d10(test_swapchain_backbuffer_index);
if (!(d3d12_module = LoadLibraryA("d3d12.dll")))
@@ -4175,6 +4226,7 @@ START_TEST(dxgi)
ID3D12Debug_Release(debug);
}
+ run_on_d3d12(test_swapchain_resize);
run_on_d3d12(test_swapchain_backbuffer_index);
FreeLibrary(d3d12_module);
--
2.16.4
More information about the wine-devel
mailing list