[PATCH 3/6] d3d10/effect: Use same field to return ExplicitBindPoint for all variable types.

Matteo Bruni matteo.mystral at gmail.com
Fri Sep 10 15:13:31 CDT 2021


On Thu, Sep 9, 2021 at 7:58 AM Nikolay Sivov <nsivov at codeweavers.com> wrote:
>
> Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
> ---
>  dlls/d3d10/effect.c       | 23 ++++++++++++-----------
>  dlls/d3d10/tests/effect.c | 36 ++++++++++++++++++++++++++----------
>  2 files changed, 38 insertions(+), 21 deletions(-)
>
> diff --git a/dlls/d3d10/effect.c b/dlls/d3d10/effect.c
> index f8e7674ae1a..4807136f670 100644
> --- a/dlls/d3d10/effect.c
> +++ b/dlls/d3d10/effect.c
> @@ -2045,6 +2045,9 @@ static HRESULT parse_fx10_numeric_variable(const char *data, size_t data_size,
>              return hr;
>      }
>
> +    if (v->flag & D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT)
> +        v->explicit_bind_point = v->buffer_offset;
> +
>      return S_OK;
>  }
>
> @@ -3967,7 +3970,7 @@ static struct ID3D10EffectType * STDMETHODCALLTYPE d3d10_effect_variable_GetType
>  static HRESULT STDMETHODCALLTYPE d3d10_effect_variable_GetDesc(ID3D10EffectVariable *iface,
>          D3D10_EFFECT_VARIABLE_DESC *desc)
>  {
> -    struct d3d10_effect_variable *This = impl_from_ID3D10EffectVariable(iface);
> +    struct d3d10_effect_variable *v = impl_from_ID3D10EffectVariable(iface);
>
>      TRACE("iface %p, desc %p\n", iface, desc);
>
> @@ -3985,16 +3988,14 @@ static HRESULT STDMETHODCALLTYPE d3d10_effect_variable_GetDesc(ID3D10EffectVaria
>
>      /* FIXME: This isn't correct. Anonymous shaders let desc->ExplicitBindPoint untouched, but normal shaders set it! */
>      memset(desc, 0, sizeof(*desc));
> -    desc->Name = This->name;
> -    desc->Semantic = This->semantic;
> -    desc->Flags = This->flag;
> -    desc->Annotations = This->annotation_count;
> -    desc->BufferOffset = This->buffer_offset;
> -
> -    if (This->flag & D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT)
> -    {
> -        desc->ExplicitBindPoint = This->buffer_offset;
> -    }
> +    desc->Name = v->name;
> +    desc->Semantic = v->semantic;
> +    desc->Flags = v->flag;
> +    desc->Annotations = v->annotation_count;
> +    desc->BufferOffset = v->buffer_offset;
> +
> +    if (v->flag & D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT)
> +        desc->ExplicitBindPoint = v->explicit_bind_point;
>
>      return S_OK;
>  }

Incidentally, what is that FIXME at the top of the hunk? Any idea
what's trying to say?



More information about the wine-devel mailing list