=?UTF-8?Q?Stefan=20D=C3=B6singer=20?=: d3d8/tests: Use create_device for test_fpu_setup.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Oct 22 09:55:25 CDT 2014
Module: wine
Branch: master
Commit: 1ae02b92e099ff10d6f3eaa7c26438922b48c550
URL: http://source.winehq.org/git/wine.git/?a=commit;h=1ae02b92e099ff10d6f3eaa7c26438922b48c550
Author: Stefan Dösinger <stefan at codeweavers.com>
Date: Wed Oct 22 00:22:06 2014 +0200
d3d8/tests: Use create_device for test_fpu_setup.
---
dlls/d3d8/tests/device.c | 38 ++++++++++++++++++++++----------------
1 file changed, 22 insertions(+), 16 deletions(-)
diff --git a/dlls/d3d8/tests/device.c b/dlls/d3d8/tests/device.c
index 2278c06..6caf8b4 100644
--- a/dlls/d3d8/tests/device.c
+++ b/dlls/d3d8/tests/device.c
@@ -32,6 +32,7 @@ struct vec3
};
#define CREATE_DEVICE_FULLSCREEN 0x01
+#define CREATE_DEVICE_FPU_PRESERVE 0x02
struct device_desc
{
@@ -92,6 +93,7 @@ static IDirect3DDevice8 *create_device(IDirect3D8 *d3d8, HWND focus_window, cons
{
D3DPRESENT_PARAMETERS present_parameters = {0};
IDirect3DDevice8 *device;
+ DWORD behavior_flags = D3DCREATE_HARDWARE_VERTEXPROCESSING;
present_parameters.BackBufferWidth = 640;
present_parameters.BackBufferHeight = 480;
@@ -108,17 +110,24 @@ static IDirect3DDevice8 *create_device(IDirect3D8 *d3d8, HWND focus_window, cons
present_parameters.BackBufferHeight = desc->height;
present_parameters.hDeviceWindow = desc->device_window;
present_parameters.Windowed = !(desc->flags & CREATE_DEVICE_FULLSCREEN);
+ if (desc->flags & CREATE_DEVICE_FPU_PRESERVE)
+ behavior_flags |= D3DCREATE_FPU_PRESERVE;
}
if (SUCCEEDED(IDirect3D8_CreateDevice(d3d8, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, focus_window,
- D3DCREATE_HARDWARE_VERTEXPROCESSING, &present_parameters, &device))) return device;
+ behavior_flags, &present_parameters, &device)))
+ return device;
present_parameters.AutoDepthStencilFormat = D3DFMT_D16;
if (SUCCEEDED(IDirect3D8_CreateDevice(d3d8, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, focus_window,
- D3DCREATE_HARDWARE_VERTEXPROCESSING, &present_parameters, &device))) return device;
+ behavior_flags, &present_parameters, &device)))
+ return device;
+
+ behavior_flags ^= (D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_SOFTWARE_VERTEXPROCESSING);
if (SUCCEEDED(IDirect3D8_CreateDevice(d3d8, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, focus_window,
- D3DCREATE_SOFTWARE_VERTEXPROCESSING, &present_parameters, &device))) return device;
+ behavior_flags, &present_parameters, &device)))
+ return device;
return NULL;
}
@@ -2578,7 +2587,7 @@ static inline WORD get_fpu_cw(void)
static void test_fpu_setup(void)
{
#if defined(D3D8_TEST_SET_FPU_CW) && defined(D3D8_TEST_GET_FPU_CW)
- D3DPRESENT_PARAMETERS present_parameters;
+ struct device_desc device_desc;
IDirect3DDevice8 *device;
D3DDISPLAYMODE d3ddm;
IDirect3D8 *d3d8;
@@ -2594,21 +2603,18 @@ static void test_fpu_setup(void)
hr = IDirect3D8_GetAdapterDisplayMode(d3d8, D3DADAPTER_DEFAULT, &d3ddm);
ok(SUCCEEDED(hr), "GetAdapterDisplayMode failed, hr %#x.\n", hr);
- memset(&present_parameters, 0, sizeof(present_parameters));
- present_parameters.Windowed = TRUE;
- present_parameters.hDeviceWindow = window;
- present_parameters.SwapEffect = D3DSWAPEFFECT_DISCARD;
- present_parameters.BackBufferFormat = d3ddm.Format;
+ device_desc.device_window = window;
+ device_desc.width = 640;
+ device_desc.height = 480;
+ device_desc.flags = 0;
set_fpu_cw(0xf60);
cw = get_fpu_cw();
ok(cw == 0xf60, "cw is %#x, expected 0xf60.\n", cw);
- hr = IDirect3D8_CreateDevice(d3d8, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, window,
- D3DCREATE_HARDWARE_VERTEXPROCESSING, &present_parameters, &device);
- if (FAILED(hr))
+ if (!(device = create_device(d3d8, window, &device_desc)))
{
- skip("Failed to create a device, hr %#x.\n", hr);
+ skip("Failed to create a 3D device, skipping test.\n");
set_fpu_cw(0x37f);
goto done;
}
@@ -2624,9 +2630,9 @@ static void test_fpu_setup(void)
cw = get_fpu_cw();
ok(cw == 0xf60, "cw is %#x, expected 0xf60.\n", cw);
- hr = IDirect3D8_CreateDevice(d3d8, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, window,
- D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_FPU_PRESERVE, &present_parameters, &device);
- ok(SUCCEEDED(hr), "CreateDevice failed, hr %#x.\n", hr);
+ device_desc.flags = CREATE_DEVICE_FPU_PRESERVE;
+ device = create_device(d3d8, window, &device_desc);
+ ok(!!device, "CreateDevice failed.\n");
cw = get_fpu_cw();
ok(cw == 0xf60, "cw is %#x, expected 0xf60.\n", cw);
More information about the wine-cvs
mailing list