[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