=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: d3dx9/tests: Add cube texture tests for ID3DXRenderToEnvMap.
Alexandre Julliard
julliard at winehq.org
Mon Aug 13 13:21:20 CDT 2012
Module: wine
Branch: master
Commit: dcc09efe80941f547b233455842217f4a4a7e7c2
URL: http://source.winehq.org/git/wine.git/?a=commit;h=dcc09efe80941f547b233455842217f4a4a7e7c2
Author: Józef Kucia <joseph.kucia at gmail.com>
Date: Tue Jul 31 15:26:41 2012 +0200
d3dx9/tests: Add cube texture tests for ID3DXRenderToEnvMap.
---
dlls/d3dx9_36/tests/core.c | 91 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 91 insertions(+), 0 deletions(-)
diff --git a/dlls/d3dx9_36/tests/core.c b/dlls/d3dx9_36/tests/core.c
index 92c114a..ba0f065 100644
--- a/dlls/d3dx9_36/tests/core.c
+++ b/dlls/d3dx9_36/tests/core.c
@@ -1084,10 +1084,73 @@ static void test_D3DXCreateRenderToEnvMap(IDirect3DDevice9 *device)
if (SUCCEEDED(hr)) ID3DXRenderToEnvMap_Release(render);
}
+static void test_ID3DXRenderToEnvMap_cube_map(IDirect3DDevice9 *device)
+{
+ HRESULT hr;
+ IDirect3DCubeTexture9 *cube_texture = NULL;
+ ID3DXRenderToEnvMap *render = NULL;
+ struct device_state pre_state;
+ struct device_state current_state;
+
+ hr = IDirect3DDevice9_CreateCubeTexture(device, 256, 0, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT,
+ &cube_texture, NULL);
+ if (FAILED(hr))
+ {
+ skip("Failed to create cube texture\n");
+ return;
+ }
+
+ hr = retrieve_device_state(device, &pre_state);
+
+ hr = D3DXCreateRenderToEnvMap(device, 256, 0, D3DFMT_A8R8G8B8, TRUE, D3DFMT_D24X8, &render);
+ ok(hr == D3D_OK, "D3DCreateRenderToEnvMap returned %#x, expected %#x\n", hr, D3D_OK);
+ if (SUCCEEDED(hr))
+ {
+ DWORD face;
+
+ hr = ID3DXRenderToEnvMap_End(render, D3DX_FILTER_NONE);
+ ok(hr == D3DERR_INVALIDCALL, "ID3DXRenderToEnvMap::End returned %#x, expected %#x\n", hr, D3DERR_INVALIDCALL);
+
+ hr = ID3DXRenderToEnvMap_BeginCube(render, cube_texture);
+ ok(hr == D3D_OK, "ID3DXRenderToEnvMap::BeginCube returned %#x, expected %#x\n", hr, D3D_OK);
+
+ hr = retrieve_device_state(device, ¤t_state);
+ ok(SUCCEEDED(hr), "Failed to retrieve device state\n");
+ compare_device_state(¤t_state, &pre_state, TRUE);
+ release_device_state(¤t_state);
+
+ for (face = D3DCUBEMAP_FACE_POSITIVE_X; face <= D3DCUBEMAP_FACE_NEGATIVE_Z; face++)
+ {
+ hr = ID3DXRenderToEnvMap_Face(render, face, D3DX_FILTER_POINT);
+ ok(hr == D3D_OK, "ID3DXRenderToEnvMap::Face returned %#x, expected %#x\n", hr, D3D_OK);
+
+ hr = retrieve_device_state(device, ¤t_state);
+ ok(SUCCEEDED(hr), "Failed to retrieve device state\n");
+ compare_device_state(¤t_state, &pre_state, FALSE);
+ release_device_state(¤t_state);
+ }
+
+ hr = ID3DXRenderToEnvMap_End(render, D3DX_FILTER_POINT);
+ ok(hr == D3D_OK, "ID3DXRenderToEnvMap::End returned %#x, expected %#x\n", hr, D3D_OK);
+
+ hr = retrieve_device_state(device, ¤t_state);
+ ok(SUCCEEDED(hr), "Failed to retrieve device state\n");
+ compare_device_state(¤t_state, &pre_state, TRUE);
+ release_device_state(¤t_state);
+
+ check_release((IUnknown *)render, 0);
+ }
+
+ release_device_state(&pre_state);
+
+ check_release((IUnknown *)cube_texture, 0);
+}
+
static void test_ID3DXRenderToEnvMap(IDirect3DDevice9 *device)
{
HRESULT hr;
ID3DXRenderToEnvMap *render;
+ IDirect3DSurface9 *depth_stencil_surface;
hr = D3DXCreateRenderToEnvMap(device, 256, 0, D3DFMT_A8R8G8B8, FALSE, D3DFMT_UNKNOWN, &render);
if (SUCCEEDED(hr))
@@ -1124,6 +1187,34 @@ static void test_ID3DXRenderToEnvMap(IDirect3DDevice9 *device)
check_release((IUnknown *)render, 0);
} else skip("Failed to create ID3DXRenderToEnvMap\n");
+
+ /* make sure there is a depth stencil surface present */
+ hr = IDirect3DDevice9_GetDepthStencilSurface(device, &depth_stencil_surface);
+ if (SUCCEEDED(hr))
+ {
+ IDirect3DSurface9_Release(depth_stencil_surface);
+ depth_stencil_surface = NULL;
+ }
+ else if (hr == D3DERR_NOTFOUND)
+ {
+ hr = IDirect3DDevice9_CreateDepthStencilSurface(device, 256, 256, D3DFMT_D24X8,
+ D3DMULTISAMPLE_NONE, 0, TRUE, &depth_stencil_surface, NULL);
+ if (SUCCEEDED(hr)) IDirect3DDevice9_SetDepthStencilSurface(device, depth_stencil_surface);
+ }
+
+ if (FAILED(hr))
+ {
+ skip("Failed to create depth stencil surface\n");
+ return;
+ }
+
+ test_ID3DXRenderToEnvMap_cube_map(device);
+
+ if (depth_stencil_surface)
+ {
+ IDirect3DDevice9_SetDepthStencilSurface(device, NULL);
+ IDirect3DSurface9_Release(depth_stencil_surface);
+ }
}
START_TEST(core)
More information about the wine-cvs
mailing list