Matteo Bruni : d3d9/tests: Add a vertex blending test with D3DCOLOR weights.
Alexandre Julliard
julliard at winehq.org
Tue Feb 28 03:45:54 CST 2017
Module: wine
Branch: oldstable
Commit: 25263909aed0dd43a67a67687d18bfef2ddee942
URL: http://source.winehq.org/git/wine.git/?a=commit;h=25263909aed0dd43a67a67687d18bfef2ddee942
Author: Matteo Bruni <mbruni at codeweavers.com>
Date: Fri Jul 29 21:01:53 2016 +0200
d3d9/tests: Add a vertex blending test with D3DCOLOR weights.
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>
(cherry picked from commit e592b541a1bfd4edf109e32918f4a5fabb3ade67)
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>
---
dlls/d3d9/tests/visual.c | 108 +++++++++++++++++++++++++++++++++++------------
1 file changed, 81 insertions(+), 27 deletions(-)
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index c91d02c..bb56bd6 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -19408,6 +19408,7 @@ static void test_texcoordindex(void)
static void test_vertex_blending(void)
{
+ IDirect3DVertexDeclaration9 *vertex_declaration;
IDirect3DDevice9 *device;
IDirect3D9 *d3d;
D3DCAPS9 caps;
@@ -19488,12 +19489,23 @@ static void test_vertex_blending(void)
static const struct
{
+ DWORD fvf;
+ D3DVERTEXELEMENT9 decl_elements[3];
struct
{
- struct vec3 position;
- struct vec3 blendweights;
- }
- vertex_data[4];
+ struct
+ {
+ struct vec3 position;
+ struct vec3 blendweights;
+ }
+ vertex_data_float[4];
+ struct
+ {
+ struct vec3 position;
+ D3DCOLOR blendweights;
+ }
+ vertex_data_d3dcolor[4];
+ } s;
const POINT *quad_points;
const POINT *empty_points;
}
@@ -19501,36 +19513,59 @@ static void test_vertex_blending(void)
{
/* upper right */
{
- {{{-1.0f, -1.0f, 0.0f}, {0.0f, 0.0f, 0.0f}},
- {{-1.0f, 1.0f, 0.0f}, {0.0f, 0.0f, 0.0f}},
- {{ 1.0f, -1.0f, 0.0f}, {0.0f, 0.0f, 0.0f}},
- {{ 1.0f, 1.0f, 0.0f}, {0.0f, 0.0f, 0.0f}}},
+ D3DFVF_XYZB3,
+ {{0}},
+ {{{{-1.0f, -1.0f, 0.0f}, {0.0f, 0.0f, 0.0f}},
+ {{-1.0f, 1.0f, 0.0f}, {0.0f, 0.0f, 0.0f}},
+ {{ 1.0f, -1.0f, 0.0f}, {0.0f, 0.0f, 0.0f}},
+ {{ 1.0f, 1.0f, 0.0f}, {0.0f, 0.0f, 0.0f}}}},
quad_upper_right_points, quad_upper_right_empty_points
},
/* center */
{
- {{{-1.0f, -1.0f, 0.0f}, {0.25f, 0.25f, 0.25f}},
- {{-1.0f, 1.0f, 0.0f}, {0.25f, 0.25f, 0.25f}},
- {{ 1.0f, -1.0f, 0.0f}, {0.25f, 0.25f, 0.25f}},
- {{ 1.0f, 1.0f, 0.0f}, {0.25f, 0.25f, 0.25f}}},
+ D3DFVF_XYZB3,
+ {{0}},
+ {{{{-1.0f, -1.0f, 0.0f}, {0.25f, 0.25f, 0.25f}},
+ {{-1.0f, 1.0f, 0.0f}, {0.25f, 0.25f, 0.25f}},
+ {{ 1.0f, -1.0f, 0.0f}, {0.25f, 0.25f, 0.25f}},
+ {{ 1.0f, 1.0f, 0.0f}, {0.25f, 0.25f, 0.25f}}}},
quad_center_points, quad_center_empty_points
},
- /* upper center */
+ /* upper center */
{
- {{{-1.0f, -1.0f, 0.0f}, {0.5f, 0.0f, 0.0f}},
- {{-1.0f, 1.0f, 0.0f}, {0.5f, 0.0f, 0.0f}},
- {{ 1.0f, -1.0f, 0.0f}, {0.5f, 0.0f, 0.0f}},
- {{ 1.0f, 1.0f, 0.0f}, {0.5f, 0.0f, 0.0f}}},
+ D3DFVF_XYZB3,
+ {{0}},
+ {{{{-1.0f, -1.0f, 0.0f}, {0.5f, 0.0f, 0.0f}},
+ {{-1.0f, 1.0f, 0.0f}, {0.5f, 0.0f, 0.0f}},
+ {{ 1.0f, -1.0f, 0.0f}, {0.5f, 0.0f, 0.0f}},
+ {{ 1.0f, 1.0f, 0.0f}, {0.5f, 0.0f, 0.0f}}}},
quad_upper_center_points, quad_upper_center_empty_points
},
- /* full screen */
+ /* full screen */
{
- {{{-1.0f, -1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}},
- {{-1.0f, 1.0f, 0.0f}, {1.0f, 0.0f, 0.0f}},
- {{ 1.0f, -1.0f, 0.0f}, {0.0f, 0.0f, 1.0f}},
- {{ 1.0f, 1.0f, 0.0f}, {0.0f, 0.0f, 0.0f}}},
+ D3DFVF_XYZB3,
+ {{0}},
+ {{{{-1.0f, -1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}},
+ {{-1.0f, 1.0f, 0.0f}, {1.0f, 0.0f, 0.0f}},
+ {{ 1.0f, -1.0f, 0.0f}, {0.0f, 0.0f, 1.0f}},
+ {{ 1.0f, 1.0f, 0.0f}, {0.0f, 0.0f, 0.0f}}}},
quad_fullscreen_points, quad_fullscreen_empty_points
- }
+ },
+ /* D3DCOLOR, full screen */
+ {
+ 0,
+ {
+ {0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0},
+ {0, 12, D3DDECLTYPE_D3DCOLOR, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_BLENDWEIGHT, 0},
+ D3DDECL_END()
+ },
+ {{{{0}}},
+ {{{-1.0f, -1.0f, 0.0f}, 0x0000ff00},
+ {{-1.0f, 1.0f, 0.0f}, 0x00ff0000},
+ {{ 1.0f, -1.0f, 0.0f}, 0x000000ff},
+ {{ 1.0f, 1.0f, 0.0f}, 0x00000000}}},
+ quad_fullscreen_points, quad_fullscreen_empty_points
+ },
};
window = CreateWindowA("static", "d3d9_test", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
@@ -19574,16 +19609,32 @@ static void test_vertex_blending(void)
{
const POINT *point;
+ if (tests[i].fvf)
+ {
+ hr = IDirect3DDevice9_SetFVF(device, tests[i].fvf);
+ ok(SUCCEEDED(hr), "Failed to set FVF, hr %#x.\n", hr);
+ vertex_declaration = NULL;
+ }
+ else
+ {
+ hr = IDirect3DDevice9_CreateVertexDeclaration(device, tests[i].decl_elements, &vertex_declaration);
+ ok(SUCCEEDED(hr), "Failed to create vertex declaration, hr %#x.\n", hr);
+ hr = IDirect3DDevice9_SetVertexDeclaration(device, vertex_declaration);
+ ok(SUCCEEDED(hr), "Failed to set vertex declaration, hr %#x.\n", hr);
+ }
+
hr = IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET, 0xff000000, 0.0, 0);
ok(SUCCEEDED(hr), "Failed to clear %08x\n", hr);
hr = IDirect3DDevice9_BeginScene(device);
ok(SUCCEEDED(hr), "Failed to begin scene, hr %#x.\n", hr);
- hr = IDirect3DDevice9_SetFVF(device, D3DFVF_XYZB3);
- ok(SUCCEEDED(hr), "Failed to set FVF, hr %#x.\n", hr);
-
- hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2, tests[i].vertex_data, 6 * sizeof(float));
+ if (tests[i].fvf)
+ hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2,
+ tests[i].s.vertex_data_float, sizeof(*tests[i].s.vertex_data_float));
+ else
+ hr = IDirect3DDevice9_DrawPrimitiveUP(device, D3DPT_TRIANGLESTRIP, 2,
+ tests[i].s.vertex_data_d3dcolor, sizeof(*tests[i].s.vertex_data_d3dcolor));
ok(SUCCEEDED(hr), "Failed to draw, hr %#x.\n", hr);
hr = IDirect3DDevice9_EndScene(device);
@@ -19607,6 +19658,9 @@ static void test_vertex_blending(void)
hr = IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL);
ok(SUCCEEDED(hr), "Failed to present, hr %#x.\n", hr);
+
+ if (vertex_declaration)
+ IDirect3DVertexDeclaration9_Release(vertex_declaration);
}
refcount = IDirect3DDevice9_Release(device);
More information about the wine-cvs
mailing list