d3d10/effect: Store explicit bind point value for constant buffers and object variables.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Nikolay Sivov 2021-08-26 08:32:13 +03:00 committed by Alexandre Julliard
parent 03c88ad622
commit 6cd12a9a43
2 changed files with 7 additions and 2 deletions

View File

@ -199,6 +199,7 @@ struct d3d10_effect_variable
DWORD annotation_count; DWORD annotation_count;
DWORD flag; DWORD flag;
DWORD data_size; DWORD data_size;
DWORD explicit_bind_point;
struct d3d10_effect *effect; struct d3d10_effect *effect;
struct d3d10_effect_variable *elements; struct d3d10_effect_variable *elements;
struct d3d10_effect_variable *members; struct d3d10_effect_variable *members;

View File

@ -1165,6 +1165,8 @@ static HRESULT parse_fx10_variable_head(const char *data, size_t data_size,
} }
set_variable_vtbl(v); set_variable_vtbl(v);
v->explicit_bind_point = ~0u;
return copy_variableinfo_from_type(v); return copy_variableinfo_from_type(v);
} }
@ -1927,7 +1929,8 @@ static HRESULT parse_fx10_local_variable(const char *data, size_t data_size,
} }
TRACE("Variable semantic: %s.\n", debugstr_a(v->semantic)); TRACE("Variable semantic: %s.\n", debugstr_a(v->semantic));
skip_dword_unknown("local variable", ptr, 1); read_dword(ptr, &v->explicit_bind_point);
TRACE("Variable explicit bind point %#x.\n", v->explicit_bind_point);
switch (v->type->basetype) switch (v->type->basetype)
{ {
@ -2191,7 +2194,8 @@ static HRESULT parse_fx10_local_buffer(const char *data, size_t data_size,
read_dword(ptr, &l->type->member_count); read_dword(ptr, &l->type->member_count);
TRACE("Local buffer member count: %#x.\n", l->type->member_count); TRACE("Local buffer member count: %#x.\n", l->type->member_count);
skip_dword_unknown("local buffer", ptr, 1); read_dword(ptr, &l->explicit_bind_point);
TRACE("Local buffer explicit bind point: %#x.\n", l->explicit_bind_point);
read_dword(ptr, &l->annotation_count); read_dword(ptr, &l->annotation_count);
TRACE("Local buffer has %u annotations.\n", l->annotation_count); TRACE("Local buffer has %u annotations.\n", l->annotation_count);