[v2 3/3] d3dx9: Return E_FAIL from ValidateTechnique() for techniques with unsupported shaders.
Paul Gofman
gofmanp at gmail.com
Fri Sep 1 05:44:54 CDT 2017
On 09/01/2017 02:37 AM, Matteo Bruni wrote:
> 2017-08-31 20:56 GMT+02:00 Paul Gofman <gofmanp at gmail.com>:
>
>> + if (!param->object_id || base->objects[param->object_id].creation_failed)
> It should be possible to replace this with a check for !*(void **)param->data.
> Unless you mean to use the flag for something else later on?
>
>
I explored how can I make a null shader in effect, and found that it is
possible by just assigning 'null' to VertexShader in fx file. The
important thing is, object gets id 0 which we now treat as an error.
So I suggest to:
- change this line to 'if (param->object_id && !*(void **)param->data)',
don't add creation_failed flag, as it is now clear how to properly
distinguish null shader from an unsupported one;
- after that add a separate test with null shader (concerning
GetPassDesc and ValidateTechnique) as the next patch and fix
d3dx9_base_effect_get_pass_desc() which also thinks object_id == 0 is a
problem.
More information about the wine-devel
mailing list