[v3 6/7] d3dx9: implement state save and restore in effect.

Matteo Bruni matteo.mystral at gmail.com
Thu Mar 3 17:04:42 CST 2016


2016-03-03 13:22 GMT+01:00 Paul Gofman <gofmanp at gmail.com>:
> Signed-off-by: Paul Gofman <gofmanp at gmail.com>
> ---

For your next submissions, can you please write a short changelog of
the differences with the previous version(s) of the same patch?
Ideally that goes after the '---'.

> @@ -3493,18 +3501,34 @@ static HRESULT WINAPI ID3DXEffectImpl_Begin(ID3DXEffect *iface, UINT *passes, DW
>          if (flags & ~(D3DXFX_DONOTSAVESTATE | D3DXFX_DONOTSAVESAMPLERSTATE | D3DXFX_DONOTSAVESHADERSTATE))
>              WARN("Invalid flags (%#x) specified.\n", flags);
>
> -        if (This->manager || flags & D3DXFX_DONOTSAVESTATE)
> +        if (effect->manager || flags & D3DXFX_DONOTSAVESTATE)
>          {
>              TRACE("State capturing disabled.\n");
>          }
>          else
>          {
> -            FIXME("State capturing not supported, yet!\n");
> +            HRESULT hr;
> +            unsigned int i;
> +
> +            if (!technique->saved_state)
> +            {
> +                hr = IDirect3DDevice9_BeginStateBlock(effect->device);
> +                if (FAILED(hr))
> +                    ERR("BeginStateBlock failed, hr %#x.\n", hr);
> +                for (i = 0; i < technique->pass_count; i++)
> +                    d3dx9_apply_pass_states(effect, &technique->passes[i]);

This is likely correct but testing it with a technique with at least 2
passes would be nice.



More information about the wine-devel mailing list