Module: Mesa Branch: main Commit: 3a33e5959669500de41550f850b1059d352a5432 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3a33e5959669500de41550f850b1059d352a5432
Author: antonino <[email protected]> Date: Fri Oct 6 12:42:20 2023 +0200 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 <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25591> --- 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))
