From 3a33e5959669500de41550f850b1059d352a5432 Mon Sep 17 00:00:00 2001 From: antonino Date: Fri, 6 Oct 2023 12:42:20 +0200 Subject: [PATCH] zink: store bindless var when creating it to avoid creating it again When bindless variables are created they get used directly and never stored anywhere so if another bindless instruction is encountered duplicate variables are created. Fixes: fe2ba184d8c ("zink: use descriptor indices in compiler") Reviewed-By: Mike Blumenkrantz Part-of: --- src/gallium/drivers/zink/zink_compiler.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index 275782c150d..80d0e9acef4 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -4228,8 +4228,13 @@ lower_bindless_instr(nir_builder *b, nir_instr *in, void *data) return false; nir_variable *var = tex->sampler_dim == GLSL_SAMPLER_DIM_BUF ? bindless->bindless[1] : bindless->bindless[0]; - if (!var) + if (!var) { var = create_bindless_texture(b->shader, tex, bindless->bindless_set); + if (tex->sampler_dim == GLSL_SAMPLER_DIM_BUF) + bindless->bindless[1] = var; + else + bindless->bindless[0] = var; + } b->cursor = nir_before_instr(in); nir_deref_instr *deref = nir_build_deref_var(b, var); if (glsl_type_is_array(var->type))