[1/2] d3dx9/tests: Add tests for D3DXCreateRenderToEnvMap. (resend)
Józef Kucia
joseph.kucia at gmail.com
Sun Jun 10 14:29:13 CDT 2012
---
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 deletions(-)
diff --git a/dlls/d3dx9_36/d3dx9_36.spec b/dlls/d3dx9_36/d3dx9_36.spec
index 8d7143e..20a8abf 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 35aed93..9b691bc 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 a19e570..3009f50 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);
--
1.7.8.6
More information about the wine-patches
mailing list