From 58f0ca86855bcb3a98a5d51dcc6fa10f9528a4f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Tue, 10 Aug 2021 05:08:23 -0400 Subject: [PATCH] radeonsi: accurately check if instance divisors need a VS update Acked-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/gallium/drivers/radeonsi/si_state.c | 7 ++----- src/gallium/drivers/radeonsi/si_state.h | 1 - 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c index 6e41125e5d8..9aba8c9bad1 100644 --- a/src/gallium/drivers/radeonsi/si_state.c +++ b/src/gallium/drivers/radeonsi/si_state.c @@ -4668,8 +4668,6 @@ static void *si_create_vertex_elements(struct pipe_context *ctx, unsigned count, unsigned instance_divisor = elements[i].instance_divisor; if (instance_divisor) { - v->uses_instance_divisors = true; - if (instance_divisor == 1) { v->instance_divisor_is_one |= 1u << i; } else { @@ -4866,9 +4864,8 @@ static void si_bind_vertex_elements(struct pipe_context *ctx, void *state) } if (old->count != v->count || - old->uses_instance_divisors != v->uses_instance_divisors || - /* we don't check which divisors changed */ - v->uses_instance_divisors || + old->instance_divisor_is_one != v->instance_divisor_is_one || + old->instance_divisor_is_fetched != v->instance_divisor_is_fetched || (old->vb_alignment_check_mask ^ v->vb_alignment_check_mask) & sctx->vertex_buffer_unaligned || ((v->vb_alignment_check_mask & sctx->vertex_buffer_unaligned) && diff --git a/src/gallium/drivers/radeonsi/si_state.h b/src/gallium/drivers/radeonsi/si_state.h index 1216bf181bd..efe9afe6223 100644 --- a/src/gallium/drivers/radeonsi/si_state.h +++ b/src/gallium/drivers/radeonsi/si_state.h @@ -173,7 +173,6 @@ struct si_vertex_elements { uint16_t vb_alignment_check_mask; uint8_t count; - bool uses_instance_divisors; uint16_t first_vb_use_mask; /* Vertex buffer descriptor list size aligned for optimal prefetch. */