Module: wine Branch: master Commit: 8912b372ed97dfa4ce1cb56ce77eca1f92a311e5 URL: http://source.winehq.org/git/wine.git/?a=commit;h=8912b372ed97dfa4ce1cb56ce7...
Author: Stefan Dösinger stefan@codeweavers.com Date: Sat Jan 30 12:15:40 2010 +0100
d3d9: Move the vertex buffer alignment test into buffer.c.
---
dlls/d3d9/tests/buffer.c | 51 +++++++++++++++++++++++++++++++ dlls/d3d9/tests/device.c | 76 ---------------------------------------------- 2 files changed, 51 insertions(+), 76 deletions(-)
diff --git a/dlls/d3d9/tests/buffer.c b/dlls/d3d9/tests/buffer.c index c2e22c2..a10cefd 100644 --- a/dlls/d3d9/tests/buffer.c +++ b/dlls/d3d9/tests/buffer.c @@ -111,6 +111,56 @@ static void lock_flag_test(IDirect3DDevice9 *device) IDirect3DVertexBuffer9_Release(buffer); }
+static inline const char *debug_d3dpool(D3DPOOL pool) +{ + switch(pool) + { + case D3DPOOL_DEFAULT: return "D3DPOOL_DEFAULT"; + case D3DPOOL_SYSTEMMEM: return "D3DPOOL_SYSTEMMEM"; + case D3DPOOL_SCRATCH: return "D3DPOOL_SCRATCH"; + case D3DPOOL_MANAGED: return "D3DPOOL_MANAGED"; + default: + return "unknown pool"; + } +} + +static void test_vertex_buffer_alignment(IDirect3DDevice9 *device) +{ + IDirect3DVertexBuffer9 *buffer = NULL; + HRESULT hr; + D3DPOOL pools[] = {D3DPOOL_DEFAULT, D3DPOOL_SYSTEMMEM, D3DPOOL_SCRATCH, D3DPOOL_MANAGED}; + DWORD sizes[] = {1, 4, 16, 17, 32, 33, 64, 65, 1024, 1025, 1048576, 1048577}; + unsigned int i, j; + void *data; + + for(i = 0; i < (sizeof(sizes) / sizeof(sizes[0])); i++) + { + for(j = 0; j < (sizeof(pools) / sizeof(pools[0])); j++) + { + hr = IDirect3DDevice9_CreateVertexBuffer(device, sizes[i], 0, 0, pools[j], &buffer, NULL); + if(pools[j] == D3DPOOL_SCRATCH) + { + ok(hr == D3DERR_INVALIDCALL, "Creating a D3DPOOL_SCRATCH buffer returned (0x%08x)\n", hr); + } + else + { + ok(SUCCEEDED(hr), "IDirect3DDevice9_CreateVertexBuffer failed (0x%08x). Pool = %s, size %d\n", hr, + debug_d3dpool(pools[j]), sizes[i]); + } + if(FAILED(hr)) continue; + + hr = IDirect3DVertexBuffer9_Lock(buffer, 0, 0, &data, 0); + ok(SUCCEEDED(hr), "IDirect3DVertexBuffer9_Lock failed (0x%08x)\n", hr); + ok(((DWORD_PTR) data & 31) == 0, "Vertex buffer start address is not 32 byte aligned(size: %d, pool: %s, data: %p)\n", + sizes[i], debug_d3dpool(pools[j]), data); + hr = IDirect3DVertexBuffer9_Unlock(buffer); + ok(SUCCEEDED(hr), "IDirect3DVertexBuffer9_Unlock failed (0x%08x)\n", hr); + + if(buffer) IDirect3DVertexBuffer9_Release(buffer); + } + } +} + START_TEST(buffer) { IDirect3DDevice9 *device_ptr; @@ -127,6 +177,7 @@ START_TEST(buffer) if (!device_ptr) return;
lock_flag_test(device_ptr); + test_vertex_buffer_alignment(device_ptr);
refcount = IDirect3DDevice9_Release(device_ptr); ok(!refcount, "Device has %u references left\n", refcount); diff --git a/dlls/d3d9/tests/device.c b/dlls/d3d9/tests/device.c index 1e58008..de46082 100644 --- a/dlls/d3d9/tests/device.c +++ b/dlls/d3d9/tests/device.c @@ -1902,81 +1902,6 @@ cleanup: if(d3d9) IDirect3D9_Release(d3d9); }
-static inline const char *debug_d3dpool(D3DPOOL pool) { - switch(pool) { - case D3DPOOL_DEFAULT: return "D3DPOOL_DEFAULT"; - case D3DPOOL_SYSTEMMEM: return "D3DPOOL_SYSTEMMEM"; - case D3DPOOL_SCRATCH: return "D3DPOOL_SCRATCH"; - case D3DPOOL_MANAGED: return "D3DPOOL_MANAGED"; - default: - return "unknown pool"; - } -} - -static void test_vertex_buffer_alignment(void) -{ - IDirect3DVertexBuffer9 *buffer = NULL; - D3DPRESENT_PARAMETERS present_parameters; - IDirect3DDevice9 *device = NULL; - IDirect3D9 *d3d9; - HWND hwnd; - HRESULT hr; - D3DPOOL pools[] = {D3DPOOL_DEFAULT, D3DPOOL_SYSTEMMEM, D3DPOOL_SCRATCH, D3DPOOL_MANAGED}; - DWORD sizes[] = {1, 4, 16, 17, 32, 33, 64, 65, 1024, 1025, 1048576, 1048577}; - unsigned int i, j; - void *data; - - d3d9 = pDirect3DCreate9( D3D_SDK_VERSION ); - ok(d3d9 != NULL, "Failed to create IDirect3D9 object\n"); - hwnd = CreateWindow( "static", "d3d9_test", WS_OVERLAPPEDWINDOW, 100, 100, 160, 160, NULL, NULL, NULL, NULL ); - ok(hwnd != NULL, "Failed to create window\n"); - if (!d3d9 || !hwnd) goto cleanup; - - ZeroMemory(&present_parameters, sizeof(present_parameters)); - present_parameters.Windowed = TRUE; - present_parameters.hDeviceWindow = hwnd; - present_parameters.SwapEffect = D3DSWAPEFFECT_DISCARD; - - hr = IDirect3D9_CreateDevice( d3d9, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL /* no NULLREF here */, hwnd, - D3DCREATE_SOFTWARE_VERTEXPROCESSING, &present_parameters, &device ); - ok(hr == D3D_OK || hr == D3DERR_NOTAVAILABLE, "IDirect3D9_CreateDevice failed with %08x\n", hr); - if(!device) - { - skip("Failed to create a d3d device\n"); - goto cleanup; - } - - for(i = 0; i < (sizeof(sizes) / sizeof(sizes[0])); i++) { - for(j = 0; j < (sizeof(pools) / sizeof(pools[0])); j++) { - hr = IDirect3DDevice9_CreateVertexBuffer(device, sizes[i], 0, 0, pools[j], &buffer, NULL); - if(pools[j] == D3DPOOL_SCRATCH) { - ok(hr == D3DERR_INVALIDCALL, "Creating a D3DPOOL_SCRATCH buffer returned (0x%08x)\n", hr); - } else { - ok(SUCCEEDED(hr), "IDirect3DDevice9_CreateVertexBuffer failed (0x%08x). Pool = %s, size %d\n", hr, - debug_d3dpool(pools[j]), sizes[i]); - } - if(FAILED(hr)) continue; - - hr = IDirect3DVertexBuffer9_Lock(buffer, 0, 0, &data, 0); - ok(SUCCEEDED(hr), "IDirect3DVertexBuffer9_Lock failed (0x%08x)\n", hr); - ok(((DWORD_PTR) data & 31) == 0, "Vertex buffer start address is not 32 byte aligned(size: %d, pool: %s, data: %p)\n", - sizes[i], debug_d3dpool(pools[j]), data); - hr = IDirect3DVertexBuffer9_Unlock(buffer); - ok(SUCCEEDED(hr), "IDirect3DVertexBuffer9_Unlock failed (0x%08x)\n", hr); - - if(buffer) IDirect3DVertexBuffer9_Release(buffer); - } - } - -cleanup: - if (device) - { - UINT refcount = IDirect3DDevice9_Release(device); - ok(!refcount, "Device has %u references left.\n", refcount); - } - if (d3d9) IDirect3D9_Release(d3d9); -} - static void test_lights(void) { D3DPRESENT_PARAMETERS present_parameters; @@ -2660,7 +2585,6 @@ START_TEST(device) test_depthstenciltest(); test_draw_indexed(); test_null_stream(); - test_vertex_buffer_alignment(); test_lights(); test_set_stream_source(); test_scissor_size();