Matteo Bruni : d3d9/tests: Extend test_mipmap_gen().
Alexandre Julliard
julliard at winehq.org
Wed Feb 14 15:12:11 CST 2018
Module: wine
Branch: master
Commit: 457617d545708d08974616d6267898e7f034a0d0
URL: https://source.winehq.org/git/wine.git/?a=commit;h=457617d545708d08974616d6267898e7f034a0d0
Author: Matteo Bruni <mbruni at codeweavers.com>
Date: Tue Feb 13 01:00:45 2018 +0100
d3d9/tests: Extend test_mipmap_gen().
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/d3d9/tests/device.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 67 insertions(+), 1 deletion(-)
diff --git a/dlls/d3d9/tests/device.c b/dlls/d3d9/tests/device.c
index 4b6d60e..0ffc1ae 100644
--- a/dlls/d3d9/tests/device.c
+++ b/dlls/d3d9/tests/device.c
@@ -7065,12 +7065,12 @@ static void test_mipmap_gen(void)
IDirect3DTexture9 *texture;
IDirect3DSurface9 *surface;
IDirect3DDevice9 *device;
+ unsigned int i, count;
D3DSURFACE_DESC desc;
D3DLOCKED_RECT lr;
IDirect3D9 *d3d;
BOOL renderable;
ULONG refcount;
- unsigned int i;
DWORD levels;
HWND window;
HRESULT hr;
@@ -7170,8 +7170,74 @@ static void test_mipmap_gen(void)
ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr);
levels = IDirect3DTexture9_GetLevelCount(texture);
ok(levels == 1, "Got unexpected levels %u.\n", levels);
+ hr = IDirect3DTexture9_GetLevelDesc(texture, 0, &desc);
+ ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr);
+ ok(desc.Usage == D3DUSAGE_AUTOGENMIPMAP, "Got unexpected usage %#x.\n", desc.Usage);
IDirect3DTexture9_Release(texture);
+ hr = IDirect3DDevice9_CreateTexture(device, 64, 64, 0, D3DUSAGE_AUTOGENMIPMAP,
+ D3DFMT_X8R8G8B8, D3DPOOL_SYSTEMMEM, &texture, 0);
+ ok(hr == D3DERR_INVALIDCALL, "Unexpected hr %#x.\n", hr);
+
+ for (i = 0; i < ARRAY_SIZE(formats); ++i)
+ {
+ hr = IDirect3D9_CheckDeviceFormat(d3d, 0, D3DDEVTYPE_HAL, D3DFMT_X8R8G8B8,
+ D3DUSAGE_AUTOGENMIPMAP, D3DRTYPE_TEXTURE, formats[i]);
+ if (SUCCEEDED(hr))
+ {
+ /* i.e. there is no difference between the D3D_OK and the
+ * D3DOK_NOAUTOGEN cases. */
+ hr = IDirect3DDevice9_CreateTexture(device, 64, 64, 0, D3DUSAGE_AUTOGENMIPMAP,
+ formats[i], D3DPOOL_DEFAULT, &texture, 0);
+ ok(hr == D3D_OK, "Unexpected hr %#x.\n", hr);
+ count = IDirect3DTexture9_GetLevelCount(texture);
+ ok(count == 1, "Unexpected level count %u.\n", count);
+ hr = IDirect3DTexture9_GetLevelDesc(texture, 0, &desc);
+ ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr);
+ ok(desc.Usage == D3DUSAGE_AUTOGENMIPMAP, "Got unexpected usage %#x.\n", desc.Usage);
+ filter_type = IDirect3DTexture9_GetAutoGenFilterType(texture);
+ ok(filter_type == D3DTEXF_LINEAR, "Got unexpected filter_type %#x.\n", filter_type);
+ hr = IDirect3DTexture9_SetAutoGenFilterType(texture, D3DTEXF_ANISOTROPIC);
+ ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr);
+ filter_type = IDirect3DTexture9_GetAutoGenFilterType(texture);
+ ok(filter_type == D3DTEXF_ANISOTROPIC, "Got unexpected filter_type %#x.\n", filter_type);
+ IDirect3DTexture9_Release(texture);
+ }
+ }
+
+ hr = IDirect3D9_CheckDeviceFormat(d3d, 0, D3DDEVTYPE_HAL,
+ D3DFMT_X8R8G8B8, D3DUSAGE_QUERY_WRAPANDMIP, D3DRTYPE_TEXTURE, D3DFMT_D16);
+ if (hr == D3D_OK)
+ {
+ hr = IDirect3DDevice9_CreateTexture(device, 64, 64, 0, 0,
+ D3DFMT_D16, D3DPOOL_DEFAULT, &texture, 0);
+ ok(hr == D3D_OK, "Unexpected hr %#x.\n", hr);
+ count = IDirect3DTexture9_GetLevelCount(texture);
+ ok(count == 7, "Unexpected level count %u.\n", count);
+ IDirect3DTexture9_Release(texture);
+
+ hr = IDirect3D9_CheckDeviceFormat(d3d, 0, D3DDEVTYPE_HAL,
+ D3DFMT_X8R8G8B8, D3DUSAGE_AUTOGENMIPMAP, D3DRTYPE_TEXTURE, D3DFMT_D16);
+ ok(hr == D3DOK_NOAUTOGEN, "Unexpected hr %#x.\n", hr);
+ hr = IDirect3DDevice9_CreateTexture(device, 64, 64, 0, D3DUSAGE_AUTOGENMIPMAP,
+ D3DFMT_D16, D3DPOOL_DEFAULT, &texture, 0);
+ ok(hr == D3D_OK, "Unexpected hr %#x.\n", hr);
+ count = IDirect3DTexture9_GetLevelCount(texture);
+ ok(count == 1, "Unexpected level count %u.\n", count);
+ hr = IDirect3DTexture9_GetLevelDesc(texture, 0, &desc);
+ ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr);
+ ok(desc.Usage == D3DUSAGE_AUTOGENMIPMAP, "Got unexpected usage %#x.\n", desc.Usage);
+ IDirect3DTexture9_Release(texture);
+ }
+ else
+ {
+ skip("Mipmapping not supported for D3DFMT_D16, skipping test.\n");
+ }
+
+ hr = IDirect3DDevice9_CreateVolumeTexture(device, 64, 64, 64, 0, D3DUSAGE_AUTOGENMIPMAP,
+ D3DFMT_X8R8G8B8, D3DPOOL_DEFAULT, (IDirect3DVolumeTexture9 **)&texture, 0);
+ ok(hr == D3DERR_INVALIDCALL, "Unexpected hr %#x.\n", hr);
+
refcount = IDirect3DDevice9_Release(device);
ok(!refcount, "Device has %u references left.\n", refcount);
IDirect3D9_Release(d3d);
More information about the wine-cvs
mailing list