Stefan Dösinger : d3d9: Some drivers allow non-aligned offsets.
Alexandre Julliard
julliard at winehq.org
Tue Feb 5 06:34:57 CST 2008
Module: wine
Branch: master
Commit: 451d85a71c5d128f487cb081a9eddfd5c682ea9e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=451d85a71c5d128f487cb081a9eddfd5c682ea9e
Author: Stefan Dösinger <stefan at codeweavers.com>
Date: Sun Jan 27 14:02:00 2008 +0100
d3d9: Some drivers allow non-aligned offsets.
---
dlls/d3d9/tests/device.c | 40 ++++++++++++++++++++++------------------
1 files changed, 22 insertions(+), 18 deletions(-)
diff --git a/dlls/d3d9/tests/device.c b/dlls/d3d9/tests/device.c
index 8ad5d63..bba4eb2 100644
--- a/dlls/d3d9/tests/device.c
+++ b/dlls/d3d9/tests/device.c
@@ -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",
More information about the wine-cvs
mailing list