forked from Mirrors/wine-wine
d3d8/tests: Use a separate device for z_range_test().
parent
f8bd052366
commit
2428049753
|
@ -1491,8 +1491,17 @@ done:
|
||||||
DestroyWindow(window);
|
DestroyWindow(window);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void z_range_test(IDirect3DDevice8 *device)
|
static void z_range_test(void)
|
||||||
{
|
{
|
||||||
|
IDirect3DDevice8 *device;
|
||||||
|
IDirect3D8 *d3d;
|
||||||
|
D3DCOLOR color;
|
||||||
|
ULONG refcount;
|
||||||
|
D3DCAPS8 caps;
|
||||||
|
DWORD shader;
|
||||||
|
HWND window;
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
static const struct vertex quad[] =
|
static const struct vertex quad[] =
|
||||||
{
|
{
|
||||||
{-1.0f, 0.0f, 1.1f, 0xffff0000},
|
{-1.0f, 0.0f, 1.1f, 0xffff0000},
|
||||||
|
@ -1509,22 +1518,18 @@ static void z_range_test(IDirect3DDevice8 *device)
|
||||||
};
|
};
|
||||||
static const struct tvertex quad3[] =
|
static const struct tvertex quad3[] =
|
||||||
{
|
{
|
||||||
{ 0.0f, 240.0f, 1.1f, 1.0f, 0xffffff00},
|
|
||||||
{ 0.0f, 480.0f, 1.1f, 1.0f, 0xffffff00},
|
|
||||||
{640.0f, 240.0f, -1.1f, 1.0f, 0xffffff00},
|
{640.0f, 240.0f, -1.1f, 1.0f, 0xffffff00},
|
||||||
{640.0f, 480.0f, -1.1f, 1.0f, 0xffffff00},
|
{640.0f, 480.0f, -1.1f, 1.0f, 0xffffff00},
|
||||||
|
{ 0.0f, 240.0f, 1.1f, 1.0f, 0xffffff00},
|
||||||
|
{ 0.0f, 480.0f, 1.1f, 1.0f, 0xffffff00},
|
||||||
};
|
};
|
||||||
static const struct tvertex quad4[] =
|
static const struct tvertex quad4[] =
|
||||||
{
|
{
|
||||||
{ 0.0f, 240.0f, 1.1f, 1.0f, 0xff00ff00},
|
|
||||||
{ 0.0f, 480.0f, 1.1f, 1.0f, 0xff00ff00},
|
|
||||||
{640.0f, 240.0f, -1.1f, 1.0f, 0xff00ff00},
|
{640.0f, 240.0f, -1.1f, 1.0f, 0xff00ff00},
|
||||||
{640.0f, 480.0f, -1.1f, 1.0f, 0xff00ff00},
|
{640.0f, 480.0f, -1.1f, 1.0f, 0xff00ff00},
|
||||||
|
{ 0.0f, 240.0f, 1.1f, 1.0f, 0xff00ff00},
|
||||||
|
{ 0.0f, 480.0f, 1.1f, 1.0f, 0xff00ff00},
|
||||||
};
|
};
|
||||||
HRESULT hr;
|
|
||||||
DWORD color;
|
|
||||||
DWORD shader;
|
|
||||||
D3DCAPS8 caps;
|
|
||||||
static const DWORD shader_code[] =
|
static const DWORD shader_code[] =
|
||||||
{
|
{
|
||||||
0xfffe0101, /* vs_1_1 */
|
0xfffe0101, /* vs_1_1 */
|
||||||
|
@ -1541,6 +1546,16 @@ static void z_range_test(IDirect3DDevice8 *device)
|
||||||
D3DVSD_END()
|
D3DVSD_END()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
window = CreateWindowA("static", "d3d8_test", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
|
||||||
|
0, 0, 640, 480, NULL, NULL, NULL, NULL);
|
||||||
|
d3d = Direct3DCreate8(D3D_SDK_VERSION);
|
||||||
|
ok(!!d3d, "Failed to create a D3D object.\n");
|
||||||
|
if (!(device = create_device(d3d, window, window, TRUE)))
|
||||||
|
{
|
||||||
|
skip("Failed to create a D3D device, skipping tests.\n");
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
hr = IDirect3DDevice8_GetDeviceCaps(device, &caps);
|
hr = IDirect3DDevice8_GetDeviceCaps(device, &caps);
|
||||||
ok(SUCCEEDED(hr), "Failed to get device caps, hr %#x.\n", hr);
|
ok(SUCCEEDED(hr), "Failed to get device caps, hr %#x.\n", hr);
|
||||||
|
|
||||||
|
@ -1555,6 +1570,8 @@ static void z_range_test(IDirect3DDevice8 *device)
|
||||||
hr = IDirect3DDevice8_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0xffffffff, 0.0f, 0);
|
hr = IDirect3DDevice8_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0xffffffff, 0.0f, 0);
|
||||||
ok(SUCCEEDED(hr), "Failed to clear, hr %#x.\n", hr);
|
ok(SUCCEEDED(hr), "Failed to clear, hr %#x.\n", hr);
|
||||||
|
|
||||||
|
hr = IDirect3DDevice8_SetRenderState(device, D3DRS_LIGHTING, FALSE);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to disabled lighting, hr %#x.\n", hr);
|
||||||
hr = IDirect3DDevice8_SetRenderState(device, D3DRS_CLIPPING, TRUE);
|
hr = IDirect3DDevice8_SetRenderState(device, D3DRS_CLIPPING, TRUE);
|
||||||
ok(SUCCEEDED(hr), "Failed to enable clipping, hr %#x.\n", hr);
|
ok(SUCCEEDED(hr), "Failed to enable clipping, hr %#x.\n", hr);
|
||||||
hr = IDirect3DDevice8_SetRenderState(device, D3DRS_ZENABLE, D3DZB_TRUE);
|
hr = IDirect3DDevice8_SetRenderState(device, D3DRS_ZENABLE, D3DZB_TRUE);
|
||||||
|
@ -1644,7 +1661,8 @@ static void z_range_test(IDirect3DDevice8 *device)
|
||||||
if (caps.VertexShaderVersion < D3DVS_VERSION(1, 1))
|
if (caps.VertexShaderVersion < D3DVS_VERSION(1, 1))
|
||||||
{
|
{
|
||||||
skip("Vertex shaders not supported\n");
|
skip("Vertex shaders not supported\n");
|
||||||
goto out;
|
IDirect3DDevice8_Release(device);
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
hr = IDirect3DDevice8_CreateVertexShader(device, vertex_declaration, shader_code, &shader, 0);
|
hr = IDirect3DDevice8_CreateVertexShader(device, vertex_declaration, shader_code, &shader, 0);
|
||||||
ok(SUCCEEDED(hr), "Failed to create vertex shader, hr %#x.\n", hr);
|
ok(SUCCEEDED(hr), "Failed to create vertex shader, hr %#x.\n", hr);
|
||||||
|
@ -1703,13 +1721,11 @@ static void z_range_test(IDirect3DDevice8 *device)
|
||||||
hr = IDirect3DDevice8_Present(device, NULL, NULL, NULL, NULL);
|
hr = IDirect3DDevice8_Present(device, NULL, NULL, NULL, NULL);
|
||||||
ok(SUCCEEDED(hr), "Failed to present, hr %#x.\n", hr);
|
ok(SUCCEEDED(hr), "Failed to present, hr %#x.\n", hr);
|
||||||
|
|
||||||
out:
|
refcount = IDirect3DDevice8_Release(device);
|
||||||
hr = IDirect3DDevice8_SetRenderState(device, D3DRS_ZENABLE, D3DZB_FALSE);
|
ok(!refcount, "Device has %u references left.\n", refcount);
|
||||||
ok(SUCCEEDED(hr), "Failed to disable z test, hr %#x.\n", hr);
|
done:
|
||||||
hr = IDirect3DDevice8_SetRenderState(device, D3DRS_CLIPPING, FALSE);
|
IDirect3D8_Release(d3d);
|
||||||
ok(SUCCEEDED(hr), "Failed to disable clipping, hr %#x.\n", hr);
|
DestroyWindow(window);
|
||||||
hr = IDirect3DDevice8_SetRenderState(device, D3DRS_ZWRITEENABLE, TRUE);
|
|
||||||
ok(SUCCEEDED(hr), "Failed to enable z writes, hr %#x.\n", hr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_scalar_instructions(void)
|
static void test_scalar_instructions(void)
|
||||||
|
@ -4946,7 +4962,6 @@ START_TEST(visual)
|
||||||
lighting_test(device_ptr);
|
lighting_test(device_ptr);
|
||||||
clear_test(device_ptr);
|
clear_test(device_ptr);
|
||||||
fog_test(device_ptr);
|
fog_test(device_ptr);
|
||||||
z_range_test(device_ptr);
|
|
||||||
|
|
||||||
refcount = IDirect3DDevice8_Release(device_ptr);
|
refcount = IDirect3DDevice8_Release(device_ptr);
|
||||||
ok(!refcount, "Device has %u references left.\n", refcount);
|
ok(!refcount, "Device has %u references left.\n", refcount);
|
||||||
|
@ -4954,6 +4969,7 @@ cleanup:
|
||||||
IDirect3D8_Release(d3d);
|
IDirect3D8_Release(d3d);
|
||||||
DestroyWindow(window);
|
DestroyWindow(window);
|
||||||
|
|
||||||
|
z_range_test();
|
||||||
offscreen_test();
|
offscreen_test();
|
||||||
alpha_test();
|
alpha_test();
|
||||||
test_scalar_instructions();
|
test_scalar_instructions();
|
||||||
|
|
Loading…
Reference in New Issue