From f072404f617ebc59de7d156ce338805202f74045 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=B3zef=20Kucia?= Date: Sun, 10 Jun 2012 21:29:13 +0200 Subject: [PATCH] d3dx9/tests: Add tests for D3DXCreateRenderToEnvMap. --- dlls/d3dx9_36/d3dx9_36.spec | 2 +- dlls/d3dx9_36/render.c | 16 ++++++++++++++ dlls/d3dx9_36/tests/core.c | 52 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 1 deletion(-) diff --git a/dlls/d3dx9_36/d3dx9_36.spec b/dlls/d3dx9_36/d3dx9_36.spec index 8d7143ec580..20a8abf1441 100644 --- a/dlls/d3dx9_36/d3dx9_36.spec +++ b/dlls/d3dx9_36/d3dx9_36.spec @@ -81,7 +81,7 @@ @ stub D3DXCreatePRTBufferTex(long long long long ptr) @ stub D3DXCreatePRTCompBuffer(long long long ptr ptr ptr ptr) @ stub D3DXCreatePRTEngine(ptr ptr long ptr ptr) -@ stub D3DXCreateRenderToEnvMap(ptr long long long long long ptr) +@ stdcall D3DXCreateRenderToEnvMap(ptr long long long long long ptr) @ stdcall D3DXCreateRenderToSurface(ptr long long long long long ptr) @ stub D3DXCreateSPMesh(ptr ptr ptr ptr ptr) @ stdcall D3DXCreateSkinInfo(long ptr long ptr) diff --git a/dlls/d3dx9_36/render.c b/dlls/d3dx9_36/render.c index 35aed933192..9b691bc6362 100644 --- a/dlls/d3dx9_36/render.c +++ b/dlls/d3dx9_36/render.c @@ -386,3 +386,19 @@ HRESULT WINAPI D3DXCreateRenderToSurface(IDirect3DDevice9 *device, *out = &render->ID3DXRenderToSurface_iface; return D3D_OK; } + +HRESULT WINAPI D3DXCreateRenderToEnvMap(IDirect3DDevice9 *device, + UINT size, + UINT mip_levels, + D3DFORMAT format, + BOOL depth_stencil, + D3DFORMAT depth_stencil_format, + ID3DXRenderToEnvMap **out) +{ + FIXME("(%p, %u, %u, %#x, %d, %#x, %p): stub\n", device, size, mip_levels, + format, depth_stencil, depth_stencil_format, out); + + if (!device || !out) return D3DERR_INVALIDCALL; + + return E_NOTIMPL; +} diff --git a/dlls/d3dx9_36/tests/core.c b/dlls/d3dx9_36/tests/core.c index a19e57006c6..3009f50af83 100644 --- a/dlls/d3dx9_36/tests/core.c +++ b/dlls/d3dx9_36/tests/core.c @@ -883,6 +883,57 @@ static void test_ID3DXRenderToSurface(IDirect3DDevice9 *device) test_ID3DXRenderToSurface_device_state(device); } +void test_D3DXCreateRenderToEnvMap(IDirect3DDevice9 *device) +{ + int i; + HRESULT hr; + ULONG ref_count; + D3DXRTE_DESC desc; + ID3DXRenderToEnvMap *render; + static const struct { + D3DXRTE_DESC parameters; + D3DXRTE_DESC expected_values; + } tests[] = { + { { 0, 0, D3DFMT_A8R8G8B8, FALSE, D3DFMT_UNKNOWN }, { 1, 1, D3DFMT_A8R8G8B8, FALSE, D3DFMT_UNKNOWN } }, + { { 256, 0, D3DFMT_A8R8G8B8, FALSE, D3DFMT_UNKNOWN }, { 256, 9, D3DFMT_A8R8G8B8, FALSE, D3DFMT_UNKNOWN } }, + { { 256, 4, D3DFMT_A8R8G8B8, FALSE, D3DFMT_D24S8 }, { 256, 4, D3DFMT_A8R8G8B8, FALSE, D3DFMT_D24S8 } }, + { { 256, 256, D3DFMT_UNKNOWN, FALSE, D3DFMT_R8G8B8 }, { 256, 9, D3DFMT_A8R8G8B8, FALSE, D3DFMT_R8G8B8 } }, + { { -1, -1, D3DFMT_A8R8G8B8, TRUE, D3DFMT_DXT1 }, { 256, 9, D3DFMT_A8R8G8B8, TRUE, D3DFMT_DXT1 } }, + { { 256, 1, D3DFMT_X8R8G8B8, TRUE, D3DFMT_UNKNOWN }, { 256, 1, D3DFMT_X8R8G8B8, TRUE, D3DFMT_UNKNOWN } } + }; + + for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++) + { + const D3DXRTE_DESC *parameters = &tests[i].parameters; + const D3DXRTE_DESC *expected = &tests[i].expected_values; + hr = D3DXCreateRenderToEnvMap(device, parameters->Size, parameters->MipLevels, parameters->Format, + parameters->DepthStencil, parameters->DepthStencilFormat, &render); + todo_wine ok(hr == D3D_OK, "%d: D3DXCreateRenderToEnvMap returned %#x, expected %#x\n", i, hr, D3D_OK); + if (SUCCEEDED(hr)) + { + hr = ID3DXRenderToEnvMap_GetDesc(render, &desc); + ok(hr == D3D_OK, "%d: GetDesc failed %#x\n", i, hr); + if (SUCCEEDED(hr)) + { + ok(desc.Size == expected->Size, "%d: Got size %u, expected %u\n", i, desc.Size, expected->Size); + ok(desc.MipLevels == expected->MipLevels, "%d: Got miplevels %u, expected %u\n", i, desc.MipLevels, expected->MipLevels); + ok(desc.Format == expected->Format, "%d: Got format %#x, expected %#x\n", i, desc.Format, expected->Format); + ok(desc.DepthStencil == expected->DepthStencil, "%d: Got depth stencil %d, expected %d\n", + i, expected->DepthStencil, expected->DepthStencil); + ok(desc.DepthStencilFormat == expected->DepthStencilFormat, "%d: Got depth stencil format %#x, expected %#x\n", + i, expected->DepthStencilFormat, expected->DepthStencilFormat); + } + check_release((IUnknown *)render, 0); + } + } + + /* check device ref count */ + ref_count = get_ref((IUnknown *)device); + hr = D3DXCreateRenderToEnvMap(device, 0, 0, D3DFMT_UNKNOWN, FALSE, D3DFMT_UNKNOWN, &render); + todo_wine check_ref((IUnknown *)device, ref_count + 1); + if (SUCCEEDED(hr)) ID3DXRenderToEnvMap_Release(render); +} + START_TEST(core) { HWND wnd; @@ -919,6 +970,7 @@ START_TEST(core) test_ID3DXFont(device); test_D3DXCreateRenderToSurface(device); test_ID3DXRenderToSurface(device); + test_D3DXCreateRenderToEnvMap(device); check_release((IUnknown*)device, 0); check_release((IUnknown*)d3d, 0); -- 2.11.4.GIT