mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-30 05:08:30 +00:00
wined3d: Just check the vertex declaration for texcoord usage.
Do not check the stream info. This would make a difference if the usage was included in the vertex declaration but the corresponding stream is not bound; however, in that case we supply a default stream containing zero, which provides the same behaviour as if the usage is not included in the vertex declaration.
This commit is contained in:
parent
89a71df48e
commit
c825c885d3
|
@ -6507,11 +6507,10 @@ void wined3d_ffp_get_fs_settings(const struct wined3d_context *context,
|
|||
}
|
||||
else
|
||||
{
|
||||
const struct wined3d_stream_info *si = &context->stream_info;
|
||||
unsigned int coord_idx = state->texture_states[i][WINED3D_TSS_TEXCOORD_INDEX];
|
||||
if ((state->texture_states[i][WINED3D_TSS_TEXCOORD_INDEX] >> WINED3D_FFP_TCI_SHIFT)
|
||||
& WINED3D_FFP_TCI_MASK
|
||||
|| (coord_idx < WINED3D_MAX_FFP_TEXTURES && (si->use_map & (1u << (WINED3D_FFP_TEXCOORD0 + coord_idx)))))
|
||||
|| (coord_idx < WINED3D_MAX_FFP_TEXTURES && (state->vertex_declaration->texcoords & (1u << coord_idx))))
|
||||
settings->texcoords_initialized |= 1u << i;
|
||||
}
|
||||
}
|
||||
|
@ -6588,7 +6587,7 @@ void wined3d_ffp_get_vs_settings(const struct wined3d_context *context,
|
|||
for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i)
|
||||
{
|
||||
coord_idx = state->texture_states[i][WINED3D_TSS_TEXCOORD_INDEX];
|
||||
if (coord_idx < WINED3D_MAX_FFP_TEXTURES && (si->use_map & (1u << (WINED3D_FFP_TEXCOORD0 + coord_idx))))
|
||||
if (coord_idx < WINED3D_MAX_FFP_TEXTURES && (vdecl->texcoords & (1u << coord_idx)))
|
||||
settings->texcoords |= 1u << i;
|
||||
settings->texgen[i] = state->texture_states[i][WINED3D_TSS_TEXCOORD_INDEX];
|
||||
}
|
||||
|
@ -6638,7 +6637,7 @@ void wined3d_ffp_get_vs_settings(const struct wined3d_context *context,
|
|||
for (i = 0; i < WINED3D_MAX_FFP_TEXTURES; ++i)
|
||||
{
|
||||
coord_idx = state->texture_states[i][WINED3D_TSS_TEXCOORD_INDEX];
|
||||
if (coord_idx < WINED3D_MAX_FFP_TEXTURES && (si->use_map & (1u << (WINED3D_FFP_TEXCOORD0 + coord_idx))))
|
||||
if (coord_idx < WINED3D_MAX_FFP_TEXTURES && (vdecl->texcoords & (1u << coord_idx)))
|
||||
settings->texcoords |= 1u << i;
|
||||
settings->texgen[i] = state->texture_states[i][WINED3D_TSS_TEXCOORD_INDEX];
|
||||
}
|
||||
|
|
|
@ -228,6 +228,8 @@ static HRESULT vertexdeclaration_init(struct wined3d_vertex_declaration *declara
|
|||
declaration->specular = true;
|
||||
else if (e->usage == WINED3D_DECL_USAGE_NORMAL)
|
||||
declaration->normal = true;
|
||||
else if (e->usage == WINED3D_DECL_USAGE_TEXCOORD)
|
||||
declaration->texcoords |= (1u << e->usage_idx);
|
||||
|
||||
/* Find the streams used in the declaration. The vertex buffers have
|
||||
* to be loaded when drawing, but filter tessellation pseudo streams. */
|
||||
|
|
|
@ -3496,6 +3496,7 @@ struct wined3d_vertex_declaration
|
|||
bool diffuse;
|
||||
bool specular;
|
||||
bool normal;
|
||||
uint8_t texcoords;
|
||||
};
|
||||
|
||||
bool wined3d_light_state_enable_light(struct wined3d_light_state *state, const struct wined3d_d3d_info *d3d_info,
|
||||
|
|
Loading…
Reference in a new issue