[PATCH 03/10] d3d10: Implement scalar effect variable get methods.

Matteo Bruni matteo.mystral at gmail.com
Wed Jan 22 09:36:48 CST 2020


On Sat, Dec 7, 2019 at 7:23 PM Connor McAdams <conmanx360 at gmail.com> wrote:
>
> Implement GetFloat/GetFloatArray, GetInt/GetIntArray, and
> GetBool/GetBoolArray methods for the scalar effect variable interface.
>
> Signed-off-by: Connor McAdams <conmanx360 at gmail.com>
> ---
>  dlls/d3d10/effect.c | 71 +++++++++++++++++++++++++++++++++++++--------
>  1 file changed, 59 insertions(+), 12 deletions(-)
>
> diff --git a/dlls/d3d10/effect.c b/dlls/d3d10/effect.c
> index 4ecc0753de..4ab882c1dc 100644
> --- a/dlls/d3d10/effect.c
> +++ b/dlls/d3d10/effect.c
> @@ -4249,6 +4249,35 @@ static void write_variable_array_to_cbuffer(struct d3d10_effect_variable *variab
>      variable->buffer->u.buffer.changed = 1;
>  }
>
> +static inline void read_variable_from_cbuffer(struct d3d10_effect_variable *variable, void *data)
> +{
> +    memcpy(data, variable->buffer->u.buffer.local_buffer + variable->buffer_offset, variable->type->size_packed);
> +}
> +
> +static void read_variable_array_from_cbuffer(struct d3d10_effect_variable *variable, void *data, UINT count)
> +{
> +    char *cbuf = variable->buffer->u.buffer.local_buffer + variable->buffer_offset;
> +    char *cur_element = data;
> +    DWORD element_size;
> +    UINT i;
> +
> +    if (!variable->type->element_count)
> +    {
> +        write_variable_to_cbuffer(variable, data);
> +        return;
> +    }

I suppose you meant to use read_variable_from_cbuffer().



More information about the wine-devel mailing list