d3d8: Fix stream data skip count in convert_to_wined3d_declaration().

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=40364
Signed-off-by: Paul Gofman <gofmanp@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
stable
Paul Gofman 2019-10-29 02:23:12 +03:00 committed by Alexandre Julliard
parent 422c4fbf71
commit 5e10f1d339
2 changed files with 14 additions and 7 deletions

View File

@ -7813,13 +7813,19 @@ static void test_vshader_input(void)
{{ 0.0f, 0.0f, 0.1f}, 0x00ff8040},
{{ 1.0f, -1.0f, 0.1f}, 0x00ff8040},
{{ 1.0f, 0.0f, 0.1f}, 0x00ff8040},
},
};
static const struct
{
struct vec3 position;
struct vec3 dummy; /* testing D3DVSD_SKIP */
DWORD diffuse;
}
quad3_color[] =
{
{{-1.0f, 0.0f, 0.1f}, 0x00ff8040},
{{-1.0f, 1.0f, 0.1f}, 0x00ff8040},
{{ 0.0f, 0.0f, 0.1f}, 0x00ff8040},
{{ 0.0f, 1.0f, 0.1f}, 0x00ff8040},
{{-1.0f, 0.0f, 0.1f}, {0.0f}, 0x00ff8040},
{{-1.0f, 1.0f, 0.1f}, {0.0f}, 0x00ff8040},
{{ 0.0f, 0.0f, 0.1f}, {0.0f}, 0x00ff8040},
{{ 0.0f, 1.0f, 0.1f}, {0.0f}, 0x00ff8040},
};
static const float quad4_color[] =
{
@ -7870,6 +7876,7 @@ static void test_vshader_input(void)
{
D3DVSD_STREAM(0),
D3DVSD_REG(0, D3DVSDT_FLOAT3), /* position */
D3DVSD_SKIP(3), /* not used */
D3DVSD_REG(5, D3DVSDT_D3DCOLOR), /* diffuse */
D3DVSD_END()
};

View File

@ -291,8 +291,8 @@ static UINT convert_to_wined3d_declaration(const DWORD *d3d8_elements, DWORD *d3
offset += wined3d_type_sizes[type];
} else if (token_type == D3DVSD_TOKEN_STREAMDATA && (*token & D3DVSD_DATALOADTYPEMASK)) {
TRACE(" 0x%08x SKIP(%u)\n", token_type, ((token_type & D3DVSD_SKIPCOUNTMASK) >> D3DVSD_SKIPCOUNTSHIFT));
offset += sizeof(DWORD) * ((token_type & D3DVSD_SKIPCOUNTMASK) >> D3DVSD_SKIPCOUNTSHIFT);
TRACE(" 0x%08x SKIP(%u)\n", *token, (*token & D3DVSD_SKIPCOUNTMASK) >> D3DVSD_SKIPCOUNTSHIFT);
offset += sizeof(DWORD) * ((*token & D3DVSD_SKIPCOUNTMASK) >> D3DVSD_SKIPCOUNTSHIFT);
}
if (element_count >= 127) {