From: Elizabeth Figura zfigura@codeweavers.com
--- dlls/wined3d/shader.c | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-)
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c index ac450df2c57..834dd7a2855 100644 --- a/dlls/wined3d/shader.c +++ b/dlls/wined3d/shader.c @@ -2313,8 +2313,24 @@ static HRESULT shader_set_function(struct wined3d_shader *shader, switch (type) { case WINED3D_SHADER_TYPE_VERTEX: + for (unsigned int i = 0; i < shader->input_signature.element_count; ++i) + { + const struct wined3d_shader_signature_element *input = &shader->input_signature.elements[i]; + + if (!(reg_maps->input_registers & (1u << input->register_idx)) || !input->semantic_name) + continue; + + shader->u.vs.attributes[input->register_idx].usage = + shader_usage_from_semantic_name(input->semantic_name); + shader->u.vs.attributes[input->register_idx].usage_idx = input->semantic_idx; + } + + if (reg_maps->usesrelconstF && !list_empty(&shader->constantsF)) + shader->load_local_constsF = TRUE; + backend_version = d3d_info->limits.vs_version; break; + case WINED3D_SHADER_TYPE_HULL: backend_version = d3d_info->limits.hs_version; break; @@ -2719,8 +2735,6 @@ fail: static HRESULT vertex_shader_init(struct wined3d_shader *shader, struct wined3d_device *device, const struct wined3d_shader_desc *desc, void *parent, const struct wined3d_parent_ops *parent_ops) { - struct wined3d_shader_reg_maps *reg_maps = &shader->reg_maps; - unsigned int i; HRESULT hr;
if (FAILED(hr = shader_init(shader, device, desc, parent, parent_ops))) @@ -2733,21 +2747,6 @@ static HRESULT vertex_shader_init(struct wined3d_shader *shader, struct wined3d_ return hr; }
- for (i = 0; i < shader->input_signature.element_count; ++i) - { - const struct wined3d_shader_signature_element *input = &shader->input_signature.elements[i]; - - if (!(reg_maps->input_registers & (1u << input->register_idx)) || !input->semantic_name) - continue; - - shader->u.vs.attributes[input->register_idx].usage = - shader_usage_from_semantic_name(input->semantic_name); - shader->u.vs.attributes[input->register_idx].usage_idx = input->semantic_idx; - } - - if (reg_maps->usesrelconstF && !list_empty(&shader->constantsF)) - shader->load_local_constsF = TRUE; - return WINED3D_OK; }