From a79ac1bee14d6600cde2788bf136aa59b69a786f Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Tue, 10 Aug 2021 11:24:47 -0700 Subject: [PATCH] freedreno: Use correct key for binning pass shader We updated the key correctly for whether we wanted to use a safe_constlen binning pass variant, but then passed the wrong key to ir3_shader_variant(). Fixes: 1dd24bf27b2 ("freedreno: Share constlen between different stages properly") Signed-off-by: Rob Clark Part-of: --- src/gallium/drivers/freedreno/ir3/ir3_cache.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/freedreno/ir3/ir3_cache.c b/src/gallium/drivers/freedreno/ir3/ir3_cache.c index b330538d12e..c402b3cd4c6 100644 --- a/src/gallium/drivers/freedreno/ir3/ir3_cache.c +++ b/src/gallium/drivers/freedreno/ir3/ir3_cache.c @@ -140,9 +140,13 @@ ir3_cache_lookup(struct ir3_cache *cache, const struct ir3_cache_key *key, struct ir3_shader_variant *bs; if (ir3_has_binning_vs(&key->key)) { - shader_key.safe_constlen = !!(safe_constlens & (1 << MESA_SHADER_VERTEX)); + /* starting with a6xx, the same const state is used for binning and draw + * passes, so the binning pass VS variant needs to match the main VS + */ + shader_key.safe_constlen = (compiler->gen >= 6) && + !!(safe_constlens & (1 << MESA_SHADER_VERTEX)); bs = - ir3_shader_variant(shaders[MESA_SHADER_VERTEX], key->key, true, debug); + ir3_shader_variant(shaders[MESA_SHADER_VERTEX], shader_key, true, debug); if (!bs) return NULL; } else {