d3d9/tests: Add some more surface GetDC() tests to test_getdc().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
31999bafda
commit
b8ffc4df1c
|
@ -7592,15 +7592,17 @@ static void test_getdc(void)
|
||||||
{"D3DFMT_DXT4", D3DFMT_DXT4, FALSE},
|
{"D3DFMT_DXT4", D3DFMT_DXT4, FALSE},
|
||||||
{"D3DFMT_DXT5", D3DFMT_DXT5, FALSE},
|
{"D3DFMT_DXT5", D3DFMT_DXT5, FALSE},
|
||||||
};
|
};
|
||||||
|
IDirect3DSurface9 *surface, *surface2;
|
||||||
|
IDirect3DCubeTexture9 *cube_texture;
|
||||||
IDirect3DTexture9 *texture;
|
IDirect3DTexture9 *texture;
|
||||||
IDirect3DSurface9 *surface;
|
|
||||||
IDirect3DDevice9 *device;
|
IDirect3DDevice9 *device;
|
||||||
|
D3DLOCKED_RECT map_desc;
|
||||||
IDirect3D9 *d3d;
|
IDirect3D9 *d3d;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
ULONG refcount;
|
ULONG refcount;
|
||||||
HWND window;
|
HWND window;
|
||||||
|
HDC dc, dc2;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
HDC dc;
|
|
||||||
|
|
||||||
window = CreateWindowA("d3d9_test_wc", "d3d9_test", WS_OVERLAPPEDWINDOW,
|
window = CreateWindowA("d3d9_test_wc", "d3d9_test", WS_OVERLAPPEDWINDOW,
|
||||||
0, 0, 640, 480, 0, 0, 0, 0);
|
0, 0, 640, 480, 0, 0, 0, 0);
|
||||||
|
@ -7652,6 +7654,153 @@ static void test_getdc(void)
|
||||||
IDirect3DSurface9_Release(surface);
|
IDirect3DSurface9_Release(surface);
|
||||||
if (texture)
|
if (texture)
|
||||||
IDirect3DTexture9_Release(texture);
|
IDirect3DTexture9_Release(texture);
|
||||||
|
|
||||||
|
if (!testdata[i].getdc_supported)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (FAILED(hr = IDirect3DDevice9_CreateCubeTexture(device, 64, 0, 0,
|
||||||
|
testdata[i].format, D3DPOOL_MANAGED, &cube_texture, NULL)))
|
||||||
|
{
|
||||||
|
skip("Failed to create cube texture for format %s (hr %#x), skipping tests.\n", testdata[i].name, hr);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr = IDirect3DCubeTexture9_GetCubeMapSurface(cube_texture, D3DCUBEMAP_FACE_POSITIVE_X, 0, &surface);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to get cube surface for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DCubeTexture9_GetCubeMapSurface(cube_texture, D3DCUBEMAP_FACE_NEGATIVE_Y, 2, &surface2);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to get cube surface for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
|
||||||
|
hr = IDirect3DSurface9_GetDC(surface, &dc);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to get DC for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_ReleaseDC(surface, dc);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to release DC for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_GetDC(surface2, &dc);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to get DC for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_ReleaseDC(surface2, dc);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to release DC for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
|
||||||
|
hr = IDirect3DSurface9_GetDC(surface, &dc);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to get DC for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
dc2 = (void *)0x1234;
|
||||||
|
hr = IDirect3DSurface9_GetDC(surface, &dc2);
|
||||||
|
todo_wine ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x for format %s.\n", hr, testdata[i].name);
|
||||||
|
ok(dc2 == (void *)0x1234, "Got unexpected dc %p for format %s.\n", dc, testdata[i].name);
|
||||||
|
hr = IDirect3DSurface9_ReleaseDC(surface, dc);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to release DC for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_ReleaseDC(surface, dc);
|
||||||
|
ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x for format %s.\n", hr, testdata[i].name);
|
||||||
|
|
||||||
|
hr = IDirect3DSurface9_LockRect(surface, &map_desc, NULL, D3DLOCK_READONLY);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to map surface for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_LockRect(surface, &map_desc, NULL, D3DLOCK_READONLY);
|
||||||
|
ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x for format %s.\n", hr, testdata[i].name);
|
||||||
|
hr = IDirect3DSurface9_UnlockRect(surface);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to unmap surface for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_UnlockRect(surface);
|
||||||
|
ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x for format %s.\n", hr, testdata[i].name);
|
||||||
|
|
||||||
|
hr = IDirect3DSurface9_GetDC(surface, &dc);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to get DC for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_LockRect(surface, &map_desc, NULL, D3DLOCK_READONLY);
|
||||||
|
ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x for format %s.\n", hr, testdata[i].name);
|
||||||
|
hr = IDirect3DSurface9_ReleaseDC(surface, dc);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to release DC for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
|
||||||
|
hr = IDirect3DSurface9_LockRect(surface, &map_desc, NULL, D3DLOCK_READONLY);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to map surface for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_GetDC(surface, &dc);
|
||||||
|
ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x for format %s.\n", hr, testdata[i].name);
|
||||||
|
hr = IDirect3DSurface9_UnlockRect(surface);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to unmap surface for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
|
||||||
|
hr = IDirect3DSurface9_GetDC(surface, &dc);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to get DC for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_GetDC(surface2, &dc2);
|
||||||
|
todo_wine ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x for format %s.\n", hr, testdata[i].name);
|
||||||
|
hr = IDirect3DSurface9_ReleaseDC(surface2, dc2);
|
||||||
|
todo_wine ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x for format %s.\n", hr, testdata[i].name);
|
||||||
|
hr = IDirect3DSurface9_ReleaseDC(surface, dc);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to release DC for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
|
||||||
|
hr = IDirect3DSurface9_GetDC(surface2, &dc);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to get DC for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_GetDC(surface, &dc2);
|
||||||
|
todo_wine ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x for format %s.\n", hr, testdata[i].name);
|
||||||
|
hr = IDirect3DSurface9_ReleaseDC(surface, dc2);
|
||||||
|
todo_wine ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x for format %s.\n", hr, testdata[i].name);
|
||||||
|
hr = IDirect3DSurface9_ReleaseDC(surface2, dc);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to release DC for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
|
||||||
|
hr = IDirect3DSurface9_LockRect(surface, &map_desc, NULL, D3DLOCK_READONLY);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to map surface for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_LockRect(surface2, &map_desc, NULL, D3DLOCK_READONLY);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to map surface for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_UnlockRect(surface2);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to unmap surface for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_UnlockRect(surface);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to unmap surface for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
|
||||||
|
hr = IDirect3DSurface9_LockRect(surface, &map_desc, NULL, D3DLOCK_READONLY);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to map surface for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_GetDC(surface, &dc);
|
||||||
|
ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x for format %s.\n", hr, testdata[i].name);
|
||||||
|
hr = IDirect3DSurface9_ReleaseDC(surface, dc);
|
||||||
|
ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x for format %s.\n", hr, testdata[i].name);
|
||||||
|
hr = IDirect3DSurface9_UnlockRect(surface);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to unmap surface for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
|
||||||
|
hr = IDirect3DSurface9_LockRect(surface2, &map_desc, NULL, D3DLOCK_READONLY);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to map surface for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_GetDC(surface, &dc);
|
||||||
|
todo_wine ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x for format %s.\n", hr, testdata[i].name);
|
||||||
|
hr = IDirect3DSurface9_ReleaseDC(surface, dc);
|
||||||
|
todo_wine ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x for format %s.\n", hr, testdata[i].name);
|
||||||
|
hr = IDirect3DSurface9_UnlockRect(surface2);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to unmap surface for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
|
||||||
|
hr = IDirect3DSurface9_GetDC(surface, &dc);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to get DC for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_LockRect(surface2, &map_desc, NULL, D3DLOCK_READONLY);
|
||||||
|
todo_wine ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x for format %s.\n", hr, testdata[i].name);
|
||||||
|
hr = IDirect3DSurface9_UnlockRect(surface2);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to unmap surface for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_ReleaseDC(surface, dc);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to release DC for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
|
||||||
|
hr = IDirect3DSurface9_GetDC(surface2, &dc);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to get DC for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_LockRect(surface, &map_desc, NULL, D3DLOCK_READONLY);
|
||||||
|
todo_wine ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x for format %s.\n", hr, testdata[i].name);
|
||||||
|
hr = IDirect3DSurface9_UnlockRect(surface);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to unmap surface for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_ReleaseDC(surface2, dc);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to release DC for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
|
||||||
|
hr = IDirect3DSurface9_UnlockRect(surface);
|
||||||
|
ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x for format %s.\n", hr, testdata[i].name);
|
||||||
|
hr = IDirect3DSurface9_GetDC(surface2, &dc);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to get DC for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_UnlockRect(surface);
|
||||||
|
todo_wine ok(SUCCEEDED(hr), "Failed to unmap surface for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_ReleaseDC(surface2, dc);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to release DC for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_UnlockRect(surface);
|
||||||
|
ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x for format %s.\n", hr, testdata[i].name);
|
||||||
|
|
||||||
|
hr = IDirect3DSurface9_UnlockRect(surface2);
|
||||||
|
ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x for format %s.\n", hr, testdata[i].name);
|
||||||
|
hr = IDirect3DSurface9_GetDC(surface, &dc);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to get DC for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_UnlockRect(surface2);
|
||||||
|
todo_wine ok(SUCCEEDED(hr), "Failed to unmap surface for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_ReleaseDC(surface, dc);
|
||||||
|
ok(SUCCEEDED(hr), "Failed to release DC for format %s, hr %#x.\n", testdata[i].name, hr);
|
||||||
|
hr = IDirect3DSurface9_UnlockRect(surface2);
|
||||||
|
ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x for format %s.\n", hr, testdata[i].name);
|
||||||
|
|
||||||
|
IDirect3DSurface9_Release(surface2);
|
||||||
|
IDirect3DSurface9_Release(surface);
|
||||||
|
IDirect3DCubeTexture9_Release(cube_texture);
|
||||||
}
|
}
|
||||||
|
|
||||||
refcount = IDirect3DDevice9_Release(device);
|
refcount = IDirect3DDevice9_Release(device);
|
||||||
|
|
Loading…
Reference in New Issue