[Mesa-dev] [PATCH] translate: fix start_instance parameter in sse version
Samuel Pitoiset
samuel.pitoiset at gmail.com
Sun Jun 19 14:05:56 UTC 2016
Looks correct to me.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
On 06/19/2016 06:47 AM, Ilia Mirkin wrote:
> The generic version gets this right already, but this was using an
> incorrect formula in SSE.
>
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> ---
> src/gallium/auxiliary/translate/translate_sse.c | 14 +++++++-------
> 1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/src/gallium/auxiliary/translate/translate_sse.c b/src/gallium/auxiliary/translate/translate_sse.c
> index 162e555..298192f 100644
> --- a/src/gallium/auxiliary/translate/translate_sse.c
> +++ b/src/gallium/auxiliary/translate/translate_sse.c
> @@ -1098,13 +1098,14 @@ init_inputs(struct translate_sse *p, unsigned index_size)
> * base_ptr + stride * index, where index depends on instance divisor
> */
> if (variant->instance_divisor) {
> + struct x86_reg tmp_EDX = p->tmp2_EDX;
> +
> /* Start with instance = instance_id
> * which is true if divisor is 1.
> */
> x86_mov(p->func, tmp_EAX, instance_id);
>
> if (variant->instance_divisor != 1) {
> - struct x86_reg tmp_EDX = p->tmp2_EDX;
> struct x86_reg tmp_ECX = p->src_ECX;
>
> /* TODO: Add x86_shr() to rtasm and use it whenever
> @@ -1113,14 +1114,13 @@ init_inputs(struct translate_sse *p, unsigned index_size)
> x86_xor(p->func, tmp_EDX, tmp_EDX);
> x86_mov_reg_imm(p->func, tmp_ECX, variant->instance_divisor);
> x86_div(p->func, tmp_ECX); /* EAX = EDX:EAX / ECX */
> -
> - /* instance = (instance_id - start_instance) / divisor +
> - * start_instance
> - */
> - x86_mov(p->func, tmp_EDX, start_instance);
> - x86_add(p->func, tmp_EAX, tmp_EDX);
> }
>
> + /* instance = (instance_id / divisor) + start_instance
> + */
> + x86_mov(p->func, tmp_EDX, start_instance);
> + x86_add(p->func, tmp_EAX, tmp_EDX);
> +
> /* XXX we need to clamp the index here too, but to a
> * per-array max value, not the draw->pt.max_index value
> * that's being given to us via translate->set_buffer().
>
More information about the mesa-dev
mailing list