Commit 451d85a7 authored by Stefan Dösinger's avatar Stefan Dösinger Committed by Alexandre Julliard

d3d9: Some drivers allow non-aligned offsets.

parent 3d2aa7af
......@@ -1755,34 +1755,38 @@ static void test_set_stream_source(void)
hr = IDirect3DDevice9_CreateVertexBuffer( device, 512, 0, 0, D3DPOOL_DEFAULT, &pVertexBuffer, NULL );
ok(hr == D3D_OK, "Failed to create a vertex buffer, hr = %s\n", DXGetErrorString9(hr));
if (SUCCEEDED(hr)) {
hr = IDirect3DDevice9_SetStreamSource(device, 0, pVertexBuffer, 0, 32);
ok(hr == D3D_OK, "Failed to set the stream source, offset 0, hr = %s\n",
DXGetErrorString9(hr));
hr = IDirect3DDevice9_SetStreamSource(device, 0, pVertexBuffer, 1, 32);
ok(hr == D3DERR_INVALIDCALL, "Unexpected result when setting the stream source, offset 1, hr = %s\n",
DXGetErrorString9(hr));
hr = IDirect3DDevice9_SetStreamSource(device, 0, pVertexBuffer, 2, 32);
ok(hr == D3DERR_INVALIDCALL, "Unexpected result when setting the stream source, offset 2, hr = %s\n",
DXGetErrorString9(hr));
hr = IDirect3DDevice9_SetStreamSource(device, 0, pVertexBuffer, 3, 32);
ok(hr == D3DERR_INVALIDCALL, "Unexpected result when setting the stream source, offset 3, hr = %s\n",
DXGetErrorString9(hr));
hr = IDirect3DDevice9_SetStreamSource(device, 0, pVertexBuffer, 4, 32);
ok(hr == D3D_OK, "Failed to set the stream source, offset 4, hr = %s\n",
DXGetErrorString9(hr));
/* Some cards(Geforce 7400 at least) accept non-aligned offsets, others(radeon 9000 verified) reject it,
* so accept both results. Wine currently rejects this to be able to optimize the vbo conversion, but writes
* a WARN
*/
hr = IDirect3DDevice9_SetStreamSource(device, 0, pVertexBuffer, 0, 32);
ok(hr == D3D_OK, "Failed to set the stream source, offset 0, hr = %s\n",
DXGetErrorString9(hr));
hr = IDirect3DDevice9_SetStreamSource(device, 0, pVertexBuffer, 1, 32);
ok(hr == D3DERR_INVALIDCALL || hr == D3D_OK, "Unexpected result when setting the stream source, offset 1, hr = %s\n",
DXGetErrorString9(hr));
hr = IDirect3DDevice9_SetStreamSource(device, 0, pVertexBuffer, 2, 32);
ok(hr == D3DERR_INVALIDCALL || hr == D3D_OK, "Unexpected result when setting the stream source, offset 2, hr = %s\n",
DXGetErrorString9(hr));
hr = IDirect3DDevice9_SetStreamSource(device, 0, pVertexBuffer, 3, 32);
ok(hr == D3DERR_INVALIDCALL || hr == D3D_OK, "Unexpected result when setting the stream source, offset 3, hr = %s\n",
DXGetErrorString9(hr));
hr = IDirect3DDevice9_SetStreamSource(device, 0, pVertexBuffer, 4, 32);
ok(hr == D3D_OK, "Failed to set the stream source, offset 4, hr = %s\n",
DXGetErrorString9(hr));
}
/* Try to set the NULL buffer with an offset and stride 0 */
hr = IDirect3DDevice9_SetStreamSource(device, 0, NULL, 0, 0);
ok(hr == D3D_OK, "Failed to set the stream source, offset 0, hr = %s\n",
DXGetErrorString9(hr));
hr = IDirect3DDevice9_SetStreamSource(device, 0, NULL, 1, 0);
ok(hr == D3DERR_INVALIDCALL, "Unexpected result when setting the stream source, offset 1, hr = %s\n",
ok(hr == D3DERR_INVALIDCALL || hr == D3D_OK, "Unexpected result when setting the stream source, offset 1, hr = %s\n",
DXGetErrorString9(hr));
hr = IDirect3DDevice9_SetStreamSource(device, 0, NULL, 2, 0);
ok(hr == D3DERR_INVALIDCALL, "Unexpected result when setting the stream source, offset 2, hr = %s\n",
ok(hr == D3DERR_INVALIDCALL || hr == D3D_OK, "Unexpected result when setting the stream source, offset 2, hr = %s\n",
DXGetErrorString9(hr));
hr = IDirect3DDevice9_SetStreamSource(device, 0, NULL, 3, 0);
ok(hr == D3DERR_INVALIDCALL, "Unexpected result when setting the stream source, offset 3, hr = %s\n",
ok(hr == D3DERR_INVALIDCALL || hr == D3D_OK, "Unexpected result when setting the stream source, offset 3, hr = %s\n",
DXGetErrorString9(hr));
hr = IDirect3DDevice9_SetStreamSource(device, 0, NULL, 4, 0);
ok(hr == D3D_OK, "Failed to set the stream source, offset 4, hr = %s\n",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment