http://bugs.winehq.org/show_bug.cgi?id=4535
------- Additional Comments From xerox_xerox2000@yahoo.co.uk 2006-07-07 05:26 ------- Created an attachment (id=2848) --> (http://bugs.winehq.org/attachment.cgi?id=2848&action=view) simple test
this very simple test fails in wine, but passes on windows (wine d3d9_crosstest.exe volume). Farcry passes these values to CreateVolumetexture. Somehow there should be a check in CreateVolumetexture that returns D3DERR_INVALIDCALL (i'd guess when widht,height and length are zero). Adding this check makes Farcry get around this bug.
diff --git a/dlls/d3d9/tests/volume.c b/dlls/d3d9/tests/volume.c index 98ae389..779501a 100644 --- a/dlls/d3d9/tests/volume.c +++ b/dlls/d3d9/tests/volume.c @@ -113,6 +113,24 @@ cleanup: if (volume_ptr) IDirect3DVolume9_Release(volume_ptr); }
+static void test_volume_0(IDirect3DDevice9 *device_ptr) +{ + IDirect3DVolumeTexture9 *texture_ptr = 0; + IDirect3DVolume9 *volume_ptr = 0; + + HRESULT hr; + + hr = IDirect3DDevice9_CreateVolumeTexture(device_ptr, 0, 0, 0, 1, 0, + D3DFMT_A8, D3DPOOL_MANAGED, &texture_ptr, 0); + ok(hr == D3DERR_INVALIDCALL, "CreateVolumeTexture returned: hr %#lx " + "Expected hr %#lx\n", hr, D3DERR_INVALIDCALL); + if (!texture_ptr || FAILED(hr)) goto cleanup; + +cleanup: + if (texture_ptr) IDirect3DVolumeTexture9_Release(texture_ptr); + if (volume_ptr) IDirect3DVolume9_Release(volume_ptr); +} + START_TEST(volume) { HMODULE d3d9_handle; @@ -129,4 +147,6 @@ START_TEST(volume) if (!device_ptr) return;
test_volume_get_container(device_ptr); + + test_volume_0(device_ptr); }