2017-05-12 14:24 GMT+02:00 Paul Gofman gofmanp@gmail.com:
diff --git a/dlls/d3dx9_36/effect.c b/dlls/d3dx9_36/effect.c index 9c07f9c..21aa5d7 100644 --- a/dlls/d3dx9_36/effect.c +++ b/dlls/d3dx9_36/effect.c @@ -1051,7 +1051,9 @@ static HRESULT d3dx9_get_param_value_ptr(struct d3dx_pass *pass, struct d3dx_sta FIXME("Preshader structure is null.\n"); return D3DERR_INVALIDCALL; }
if (update_all || is_param_eval_input_dirty(param->param_eval))
/* According to the tests, native d3dx handles the case of array index evaluated to -1
* in a specific way. */
if (state->index == 0xffffffffu || is_param_eval_input_dirty(param->param_eval, pass->update_version))
Hmm, so that's the index value set at initialization, thus getting a -1 in the first evaluation ends up breaking the "selector changed" check in native? You might want to spell that out in some form in the comment.
AFAIU there is no other way a -1 is stored in state->index, correct?